配色: 字号:
鱼c小甲鱼零基础学python全套课后题
2016-11-16 | 阅:  转:  |  分享 
  
我爱小甲鱼哦

非常不错

第一节课

0.Python是什么类型的语言?Python是脚本语言

脚本语言(Scriptinglanguage)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序。以简单的方式快速完成某些复杂的事情通常是创造脚本语言的重要原则,基于这项原则,使得脚本语言通常比C语言、C++语言或Java之类的系统编程语言要简单容易。也让脚本语言另有一些属于脚本语言的特性:

语法和结构通常比较简单

学习和使用通常比较简单

通常以容易修改程序的“解释”作为运行方式,而不需要“编译”

程序的开发产能优于运行性能

一个脚本可以使得本来要用键盘进行的相互式操作自动化。一个Shell脚本主要由原本需要在命令行输入的命令组成,或在一个文本编辑器中,用户可以使用脚本来把一些常用的操作组合成一组串行。主要用来书写这种脚本的语言叫做脚本语言。很多脚本语言实际上已经超过简单的用户命令串行的指令,还可以编写更复杂的程序。

1.IDLE是什么?IDLE是一个PythonShell,shell的意思就是“外壳”,基本上来说,就是一个通过键入文本与程序交互的途径!像我们Windows那个cmd窗口,像Linux那个黑乎乎的命令窗口,他们都是shell,利用他们,我们就可以给操作系统下达命令。同样的,我们可以利用IDLE这个shell与Python进行互动。2.print()的作用是什么?print()会在输出窗口中显示一些文本(在这一讲中,输出窗口就是IDLEshell窗口)。3.Python中表示乘法的符号是什么?Python中的乘号是(星号)。4.为什么>>>print(''Ilovefishc.com''5)可以正常执行,但>>>print(''Ilovefishc.com''+5)却报错?在Python中不能把两个完全不同的东西加在一起,比如说数字和文本,正是这个原因,>>>print(''Ilovefishc.com''+5)才会报错。这就像是在说“五只小甲鱼加上苍井空会是多少?”一样没有多大意义,结果可能是五,可能是六,也可能是八!不过乘以一个整数来翻倍就具有一定的意义了,前边的例子就是将"Ilovefishc.com"这个字符串打印五次。5.如果我需要在一个字符串中嵌入一个双引号,正确的做法是?你有两个选择:可以利用反斜杠(\)对双引号转义:\",或者用单引号引起这个字符串。例如:''Il"o"vefishc.com''。6.为什么我们要使用Python3?Python2到底有什么问题?看起来很多程序员依然都在使用Python2?确实还有相当多的程序员在使用Python2,不过Python3才是Python发展的未来,就像XP和WIN7一样。在《零基础入门学习Python》的系列教程准备中,小甲鱼发觉Python3中的新特性确实很妙,很值得进行深入学习!你也不用担心,如果你了解了Python3,Python2的代码阅读对于你来说根本不成问题!0.什么是BIF?BIF就是Built-inFunctions,内置函数。为了方便程序员快速编写脚本程序(脚本就是要编程速度快快快!!!),Python提供了非常丰富的内置函数,我们只需要直接调用即可,例如print()的功能是“打印到屏幕”,input()的作用是接收用户输入(注:Python3用input()取代了Python2的raw_input(),用法如有不懂请看视频讲解)。太多BIF学不过来怎么办?看不懂英文说明怎么办?Python3的资料太少怎么办?没事,有了小甲鱼,妈妈再也不用担心我的学习了!1.?用课堂上小甲鱼教的方法数一数Python3提供了多少个BIF?在Python或IDLE中,输入dir(__builtins__)可以看到Python提供的内置方法列表(注意,builtins前后是两个下划线哦)其中小写的就是BIF。如果想具体查看某个BIF的功能,比如input(),可以在shell中输入help(input),就会得到这个BIF的功能描述。哦,答案应该是68个,不信你自己数数看,你们肯定没有自己完成作业就来看答案!哼~T_T2.在Python看来:''FishC''和''fishc''一样吗?不一样,因为Python是一个“敏感的小女孩”,所以不要试图欺骗她,对Python来说,fishc和FishC是完全不同的两个名字,所以编程的时候一定要当心。不过Python会帮助解决可能因此出现的问题,例如只有当标识符已经赋值后(还记得吗,小甲鱼在课堂中说过Python的变量是不用先声明的)才能在代码中使用,未赋值的标识符直接使用会导致运行时错误,所以你很快就可以根据经验发现此问题。3.在小甲鱼看来,Python中什么是最重要的?你赞同吗?缩进!在小甲鱼看来,缩进是Python的灵魂,缩进的严格要求使得Python的代码显得非常精简并且有层次(小甲鱼阅读过很多大牛的代码,那个乱......C语言不是有国际乱码大赛嘛......)。所以在Python里对待缩进代码要十分小心,如果没有正确地缩进,代码所做的事情可能和你的期望相去甚远(就像C语言里边括号打错了位置)。如果在正确的位置输入冒号“:”,IDLE会自动将下一行缩进!4.这节课的例子中出现了“=”和“==”,他们表示不同的含义,你在编程的过程中会不小心把“==”误写成“=”吗?有没有好的办法可以解决这个问题呢?C语言的话,如果if(c==1)写成if(c=1),程序就完全不按程序员原本的目的去执行,但在Python这里,不好意思,行不通,语法错误!Python不允许if条件中赋值,所以ifc=1:会报错!小甲鱼觉得这种做法可以非常有效的防止程序员因为打炮、熬夜等问题导致粗心的BUG,并且这类BUG杀伤力都巨大!5.你听说过“拼接”这个词吗?在一些编程语言,我们可以将两个字符串“相加”在一起,如:''I''+''Love''+''FishC''会得到''ILoveFishC'',在Python里,这种做法叫做拼接字符串。0.编写程序:hello.py,要求用户输入姓名并打印“你好,姓名!”

name=input("请输入您的姓名:")

print(''你好,''+name+''!'')

复制代码

1.编写程序:calc.py要求用户输入1到100之间数字并判断,输入符合要求打印“你妹好漂亮”,不符合要求则打印“你大爷好丑”

temp=input("请输入1到100之间的数字:")

num=int(temp)

if1<=num<=100:

??print(''你妹好漂亮^_^'')

else:

??print(''你大爷好丑T_T'')

复制代码

5.如果非要在原始字符串结尾输入反斜杠,可以如何灵活处理?

>>>str=r''C:\ProgramFiles\FishC\Good''''\\''

复制代码测试题:0.请问以下代码会打印多少次“我爱鱼C!”

while''C'':

??print(''我爱鱼C!'')

复制代码

1.请问以下代码会打印多少次“我爱鱼C!”

i=10

whilei:

??print(''我爱鱼C!'')

??i=i-1

复制代码

2.请写出与10
temp=input("不妨猜一下小甲鱼现在心里想的是哪个数字:")

#这种想法是因为type(1)会返回,如果type(temp)返回结果一致说明输入是整数。

whiletype(temp)!=type(1):

??print("抱歉,输入不合法,",end='''')

??temp=input("请输入一个整数:")

复制代码

或者可能这样:

temp=input("不妨猜一下小甲鱼现在心里想的是哪个数字:")

#not操作符的作用是将布尔类型的结果翻转:即取反的意思,notTrue==Flase

whilenotisinstance(temp,int):

??print("抱歉,输入不合法,",end='''')

??temp=input("请输入一个整数:")

复制代码

以上方法的思路是正确的,不过似乎忽略了一点儿:就是input()的返回值始终是字符串,所以type(temp)永远是!?????其实有蛮多的做法可以实现的,不过就目前我们学习过的内容来看,还不足够。所以,在让大家动手完成这道题之前,小甲鱼介绍一点新东西给大家!

s为字符串s.isalnum()??所有字符都是数字或者字母,为真返回Ture,否则返回False。s.isalpha()??所有字符都是字母,为真返回Ture,否则返回False。s.isdigit()????所有字符都是数字,为真返回Ture,否则返回False。s.islower()??所有字符都是小写,为真返回Ture,否则返回False。s.isupper()??所有字符都是大写,为真返回Ture,否则返回False。s.istitle()????所有单词都是首字母大写,为真返回Ture,否则返回False。s.isspace()??所有字符都是空白字符,为真返回Ture,否则返回False。??????例如:>>>s=''ILOVEFISHC''>>>s.isupper()>>>True

好了,文字教程就到这里,大家赶紧趁热打铁,改造我们的小游戏吧!1.写一个程序,判断给定年份是否为闰年。(注意:请使用已学过的BIF进行灵活运用)这样定义闰年的:能被4整除但不能被100整除,或者能被400整除都是闰年。2.请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!测试题答案:

本帖隐藏的内容

0.在Python中,int表示整型,那你还记得bool、float和str分别表示什么吗?bool表示布尔类型float表示浮点型str表示字符串1.你知道为什么布尔类型(bool)的True和False分别用1和0来代替吗?你可能听说过计算机是很“笨”的,究其根本是因为它只认识二进制数,所以所有的编程语言最终都会转换成简单的二进制序列给CPU按照一定的规则解析。由于二进制只有两个数:0和1,因此用0和1来表示False和True再适合不过了,因为不用浪费资源在转换的过程上!2.使用int()将小数转换为整数,结果是向上取整还是向下取整呢?我们可爱的小甲鱼说了,小数取整会采用比较暴力的截断方式,即向下取整。(注:5.5向上取整为6,向下取整为5)3.我们人类思维是习惯于“四舍五入”法,你有什么办法使得int()按照“四舍五入”的方式取整吗?int()固然没那么“聪明”,但机器是死的,鱼油是活的!5.4“四舍五入”结果为:5,int(5.4+0.5)==55.6“四舍五入”结果为:6,int(5.6+0.5)==6大家看明白了吗?4.取得一个变量的类型,视频中介绍可以使用type()和isinstance(),你更倾向于使用哪个?建议使用isinstance(),因为它的返回结果比较直接,另外type()其实并没有你想象的那么简单,我们后边会讲到。5.Python3可以给变量命名中文名,知道为什么吗?Pyhton3源码文件默认使用utf-8编码(支持中文),这就使得以下代码是合法的:?>>>小甲鱼=''我爱你''??>>>print(小甲鱼)>>>我爱你6.【该题针对零基础的鱼油】你觉得这个系列教学有难度吗?如果有不懂的问题,请在此处提问:http://bbs.fishc.com/forum-173-1.html另外需要小甲鱼在视频讲解的方面做哪方面改进请回帖告之!

动动手答案:

本帖隐藏的内容

0.针对视频中小甲鱼提到的小漏洞,再次改进我们的小游戏:当用户输入错误类型的时候,及时提醒用户重新输入,防止程序崩溃。需要注意的地方在代码中已经注释!

importrandom

times=3

secret=random.randint(1,10)

print(''------------------我爱鱼C工作室------------------'')

guess=0

print("不妨猜一下小甲鱼现在心里想的是哪个数字:",end="")

while(guess!=secret)and(times>0):

??temp=input()

??whilenottemp.isdigit():

??????temp=input("抱歉,您的输入有误,请输入一个整数:")

??guess=int(temp)

??times=times-1#用户每输入一次,可用机会就-1

??ifguess==secret:

??????print("我草,你是小甲鱼心里的蛔虫吗?!")

??????print("哼,猜中了也没有奖励!")

??else:

??????ifguess>secret:

????????print("哥,大了大了~~~")

??????else:

????????print("嘿,小了,小了~~~")

??????iftimes>0:

????????print("再试一次吧:",end="")

??????else:

????????print("机会用光咯T_T")

print("游戏结束,不玩啦^_^")

复制代码

1.写一个程序,判断给定年份是否为闰年。

temp=input(''请输入一个年份:'')

whilenottemp.isdigit():

??temp=input("抱歉,您的输入有误,请输入一个整数:")



year=int(temp)

ifyear/400==int(year/400):

??print(temp+''是闰年!'')

else:

??if(year/4==int(year/4))and(year/100!=int(year/100)):

??????print(temp+''是闰年!'')

??else:

??????print(temp+''不是闰年!'')

复制代码

?2.尝试写代码实现以下截图功能:?3.请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!回复您的答案即可查看参考答案!测试题答案:

本帖隐藏的内容

0.请问以下代码会打印多少次“我爱鱼C!”死循环,会一直打印“我爱鱼C!”(嗯,这也算是永远支持鱼C的方法之一),直到崩溃或者用户按下快捷键CTRL+C(强制结束)造成死循环的原因是while后边的条件永远为真(True),在Python看来,只有以下内容会被看作假(注意冒号括号里边啥都没有,连空格都不要有!):FalseNone0""''''()[]{}其他一切都被解释为真!不妨试试:

while'''':

??print(''进入循环'')

print(''退出循环'')

复制代码

或者

whileFlase:

??print(''进入循环'')

print(''退出循环'')

复制代码

或者

while0:

??print(''进入循环'')

print(''退出循环'')??

复制代码

1.请问以下代码会打印多少次“我爱鱼C!”会打印10次。2.请写出与10>>print(''Ilovefishc'');print(''verymuch!'')4.Python3中,一个语句可以分成多行书写吗?可以,一行过长的语句可以使用反斜杠或者括号分解成几行,不妨试试:

>>>3>4and\

??1<2

复制代码

或者

>>>(3>4and?

??1<2)

复制代码

5.【该题针对有C或C++基础的朋友】请问Python的and操作符和C语言的&&操作符有何不同?有图有真相(C\C++VSPython):?VS?6.听说过“短路逻辑(short-circuitlogic)”吗?逻辑操作符有个有趣的特性:在不需要求值的时候不进行操作。这么说可能比较“高深”,举个例子,表达式xandy,需要x和y两个变量同时为真(True)的时候,结果才为真。因此,如果当x变量得知是假(False)的时候,表达式就会立刻返回False,而不用去管y变量的值。这种行为被称为短路逻辑(short-circuitlogic)或者惰性求值(lazyevaluation),这种行为同样也应用与or操作符,这个后边的课程小甲鱼会讲到,不急。实际上,Python的做法是如果x为假,表达式会返回x的值(0),否则它就会返回y的值(例子参考楼上那题)。

动动手答案:

本帖隐藏的内容

0.完善第二个改进要求(为用户提供三次机会尝试,机会用完或者用户猜中答案均退出循环)并改进视频中小甲鱼的代码。需要注意的地方在代码中已经注释!

importrandom

times=3

secret=random.randint(1,10)

print(''------------------我爱鱼C工作室------------------'')

#这里先给guess赋值(赋一个绝对不等于secret的值)

guess=0

#print()默认是打印完字符串会自动添加一个换行符,end=""参数告诉print()用空格代替换行

#嗯,小甲鱼觉得富有创意的你应该会尝试用end="JJ"?

print("不妨猜一下小甲鱼现在心里想的是哪个数字:",end="")

while(guess!=secret)and(times>0):

??temp=input()

??guess=int(temp)

??times=times-1#用户每输入一次,可用机会就-1

??ifguess==secret:

??????print("我草,你是小甲鱼心里的蛔虫吗?!")

??????print("哼,猜中了也没有奖励!")

??else:

??????ifguess>secret:

????????print("哥,大了大了~~~")

??????else:

????????print("嘿,小了,小了~~~")

??????iftimes>0:

????????print("再试一次吧:",end="")

??????else:

????????print("机会用光咯T_T")

print("游戏结束,不玩啦^_^")

复制代码

1.尝试写代码实现以下截图功能:

temp=input(''请输入一个整数:'')

number=int(temp)

i=1

whilenumber:

??print(i)

??i=i+1

??number=number-1

复制代码

2.尝试写代码实现以下截图功能:

temp=input(''请输入一个整数:'')

number=int(temp)

whilenumber:

??i=number-1

??whilei:

??????print('''',end='''')

??????i=i-1

??j=number

??whilej:

??????print('''',end='''')

??????j=j-1

??print()

??number=number-1

复制代码

测试题:0.Python的floor除法现在使用“//”实现,那3.0//2.0您目测会显示什么内容呢?1.a
爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。(小甲鱼温馨提示:步子太大真的容易扯着蛋~~~)

题目:请编程求解该阶梯至少有多少阶?3.请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!回复您的答案即可查看参考答案!测试题答案:

本帖隐藏的内容

0.Python的floor除法现在使用“//”实现,那3.0//2.0您目测会显示什么内容呢?如果回答是1.5那么很遗憾,您受到C语言的影响比较大,Python这里会义无反顾地执行floor除法原则,答案是:1.01.aand>or我们按照优先级给它们加上括号:(not1)or(0and1)or(3and4)or(5and6)or(7and8and9)==0or0or4or6or9==4为啥是4?大家还记得第四讲作业提到的“短路逻辑”吗?3and4==4,而3or4==3。所以答案是:4温馨提示:为了更好的表达你的程序,小甲鱼再次呼吁有些括号还是不能省下的,毕竟不是所有程序员都跟你一样都将优先级烂透于心的。5.还记得我们上节课那个求闰年的作业吗?如果还没有学到“求余”操作,还记得用什么方法可以“委曲求全”代替“%”的功能呢?因为上节课我们还没有教大家“求余”的操作,所以小甲鱼使用了“ifyear/400==int(year/400)”这样的方式来“委曲求全”。

动动手答案:

本帖隐藏的内容

0.请写一个程序打印出0~100所有的奇数。

i=0

whilei<=100:

??ifi%2!=0:

??????print(i,end='''')

??????i+=1

??else:

??????i+=1

复制代码

1.我们说过现在的Python可以计算很大很大的数据,但是......真正的大数据计算可是要靠刚刚的硬件滴,不妨写一个小代码,让你的计算机为之崩溃?print(2232)#一般很多机子都会在一会儿之后:MemoryOverflow,内存不够用。#设计到幂操作,结果都是惊人滴。2.题目:请编程求解该阶梯至少有多少阶?

x=7

i=1

flag=0



whilei<=100:

??if(x%2==1)and(x%3==2)and(x%5==4)and(x%6==5):

??????flag=1

??else:

??????x=7(i+1)#根据题意,x一定是7的整数倍,所以每次乘以7

??i+=1



ifflag==1:

??print(''阶梯数是:'',x)

else:

??print(''在程序限定的范围内找不到答案!'')

复制代码

0.ifnot(money<100):上边这行代码相当于???1.assert的作用是什么???2.假设有x=1,y=2,z=3,请问如何快速将三个变量的值互相交换???3.猜猜(x
题目备忘:按照100分制,90分以上成绩为A,80到90为B,60到80为C,60以下为D,写一个程序,当用户输入分数,自动转换为ABCD的形式打印。

1.Python的作者在很长一段时间不肯加入三元操作符就是怕跟C语言一样搞出国际乱码大赛,蛋疼的复杂度让初学者望而生畏,不过,如果你一旦搞清楚了三元操作符的使用技巧,或许一些比较复杂的问题反而迎刃而解。请将以下代码修改为三元操作符实现:

x,y,z=6,5,4

ifx
??small=x

??ifz
??????small=z

elify
??small=y

else:

??small=z

复制代码

2.请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!????回复您的答案即可查看参考答案!????测试题答案:??

本帖隐藏的内容

0.?ifnot(money<100):?这行代码相当于???ifmoney>=100:????1.assert的作用是什么???assert这个关键字我们称之为“断言”,当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError的异常。什么情况下我们会需要这样的代码呢?当我们在测试程序的时候就很好用,因为与其让错误的条件导致程序今后莫名其妙地崩溃,不如在错误条件出现的那一瞬间我们实现“自爆”。一般来说我们可以用Ta再程序中置入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert关键字就非常有用了。????2.假设有x=1,y=2,z=3,请问如何快速将三个变量的值互相交换???x,y,z=z,y,x????3.猜猜(x
>>>name=''小甲鱼''

>>>''鱼''inname

True

>>>''肥鱼''inname

False

复制代码

当下节课我们讲解for语句的时候,你看到in会不会就有了更深入的理解?!

????动动手答案:??

本帖隐藏的内容

0.视频中小甲鱼使用ifelifelse在大多数情况下效率要比全部使用if要高,但根据一般的统计规律,一个班的成绩一般服从正态分布,也就是说平均成绩一般集中在70~80分之间,因此根据统计规律,我们还可以改进下程序以提高效率。

score=int(input(''请输入一个分数:''))

if80>score>=60:

??print(''C'')

elif90>score>=80:

??print(''B'')

elif60>score>=0:

??print(''D'')

elif100>=score>=90:

??print(''A'')

else:

??print(''输入错误!'')

复制代码

1.Python的作者在很长一段时间不肯加入三元操作符就是怕跟C语言一样搞出国际乱码大赛,蛋疼的复杂度让初学者望而生畏,不过,如果你一旦搞清楚了三元操作符的使用技巧,或许一些比较复杂的问题反而迎刃而解。

small=xif(x
复制代码

0.下面的循环会打印多少次"ILoveFishC"?

foriinrange(0,10,2):

??print(''ILoveFishC'')

复制代码

1.下面的循环会打印多少次"ILoveFishC"?

foriin5:

??print(''ILoveFishC'')

复制代码

2.回顾一下break和continue在循环中起到的作用????3.请谈下你对列表的理解???4.请问range(10)生成哪些数?????5.目测以下程序会打印什么?

whileTrue:

??whileTrue:

??????break

??????print(1)

??print(2)

??break

print(3)

复制代码

6.什么情况下我们要使循环永远为真????7.【学会提高代码的效率】你的觉得以下代码效率方面怎样?有没有办法可以大幅度改进(仍然使用while)?

i=0

string=''ILoveFishC.com''

whilei
??print(i)

??i+=1

复制代码

动动手:??细节决定成败,看答案前记得自己先敲代码!??0.设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果用户输入的内容中包含""则不计算在内。??程序演示如图:???1.编写一个程序,求100~999之间的所有水仙花数。

如果一个3位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153=1^3+5^3+3^3,因此153就是一个水仙花数。

2.三色球问题

有红、黄、蓝三种颜色的求,其中红球3个,黄球3个,绿球6个。先将这12个球混合放在一个盒子中,从中任意摸出8个球,编程计算摸出球的各种颜色搭配。

3.请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!????回复您的答案即可查看参考答案!????测试题答案:??

本帖隐藏的内容

0.下面的循环会打印多少次"ILoveFishC"?

foriinrange(0,10,2):

??print(''ILoveFishC'')

复制代码

5次,因为从0开始,到10结束,步进为2。????1.下面的循环会打印多少次"ILoveFishC"?

foriin5:

??print(''ILoveFishC'')

复制代码

会报错,上节课的课后习题我们提到了in是“成员资格运算符”,而不是像C语言那样去使用for语法。Python的for更像脚本语言的foreach。????2.回顾一下break和continue在循环中起到的作用????break语句的作用是终止当前循环,跳出循环体。continue语句的作用是终止本轮循环并开始下一轮循环(这里要注意的是:在开始下一轮循环之前,会先测试循环条件)。????3.请谈下你对列表的理解?????嗯,有些知识点需要自己总结才能加固,下节课小甲鱼将跟大家畅谈一个打了激素的数组:列表,不容错过哦^_^????4.请问range(10)生成哪些数???????会生成range(0,10),list(range(0,10))转换成列表是:[0,1,2,3,4,5,6,7,8,9],注意不包含10哦。5.目测以下程序会打印什么?

whileTrue:

??whileTrue:

??????break

??????print(1)

??print(2)

??break

print(3)

复制代码

会打印:23因为break只能跳出一层循环,记住咯!?????????6.什么情况下我们要使循环永远为真?????whileTure:??循环体???同样用于游戏实现,因为游戏只要运行着,就需要时刻接收用户输入,因此使用永远为真确保游戏“在线”。操作系统也是同样的道理,时刻待命,操作系统永远为真的这个循环叫做消息循环。另外,许多通讯服务器的客户端/服务器系统也是通过这样的原理来工作的。????所以永远为“真”虽然是“死循环”,但不一定是坏事,再说了,我们可以随时用break来跳出循环!????7.【学会提高代码的效率】你的觉得以下代码效率方面怎样?有没有办法可以大幅度改进(仍然使用while)?

i=0

string=''ILoveFishC.com''

whilei
??print(i)

??i+=1

复制代码

这段代码之所以“效率比较低”是因为每次循环都需要调用一次len()函数(我们还没有学到函数的概念,小甲鱼这里为零基础的朋友形象的解释下:就像你打游戏打得正HIGH的时候,老妈让你去买盐......你有两种选择,一次买一包,一天去买五次,或者一次性买五包回来,老妈要就直接给她。)

i=0

string=''ILoveFishC.com''

length=len(string)

whilei
??print(i)

??i+=1??

复制代码

小甲鱼希望学习咱的课程的朋友不是只为了可以把程序写出来,而是追求把代码写好,写漂亮,做一个有理想、有追求的程序猿!

????动动手答案:??

本帖隐藏的内容

0.?设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果用户输入的内容中包含""则不计算在内。

count=3

password=''FishC.com''



whilecount:

??passwd=input(''请输入密码:'')

??ifpasswd==password:

??????print(''密码正确,进入程序......'')

??????break

??elif''''inpasswd:

??????print(''密码中不能含有""号!您还有'',count,''次机会!'',end='''')

??????continue

??else:

??????print(''密码输入错误!您还有'',count-1,''次机会!'',end='''')???

??count-=1

复制代码

1.编写一个程序,求100~999之间的所有水仙花数。

如果一个3位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153=1^3+5^3+3^3,因此153就是一个水仙花数

foriinrange(100,1000):

??sum=0

??temp=i

??whiletemp:

??????sum=sum+(temp%10)3

??????temp//=10??????#注意这里要使用地板除哦~

??ifsum==i:

??????print(i)

复制代码

2.三色球问题

有红、黄、蓝三种颜色的求,其中红球3个,黄球3个,绿球6个。先将这12个球混合放在一个盒子中,从中任意摸出8个球,编程计算摸出球的各种颜色搭配。

print(''red\tyellow\tblue'')

forredinrange(0,4):

??foryellowinrange(0,4):

??????forgreeninrange(2,7):

????????ifred+yellow+green==8:

??????????#注意,下边不是字符串拼接,因此不用“+”哦~

??????????print(red,''\t'',yellow,''\t'',green)

复制代码

注释:range(2,7)是产生[2,3,4,5,6]5个数,绿球不能是1个,因为如果绿球是1个的话,红球+黄球需要有7个才能符合题意,而红球和黄球每种只有3个,因此是range(2,7)

测试题:??0.列表都可以存放一些什么东西???1.向列表增加元素有哪些方法???2.append()方法和extend()方法都是向列表的末尾增加元素,请问他们有什么区别???3.member.append([''竹林小溪'',''Crazy迷恋''])和member.extend([''竹林小溪'',''Crazy迷恋''])实现的效果一样吗???4.有列表name=[''F'',''i'',''h'',''C''],如果小甲鱼想要在元素''i''和''h''之间插入元素''s'',应该使用什么方法来插入?????动动手:??0.自己动手试试看,并分析在这种情况下,向列表添加数据应当采用哪种方法比较好?假设给定以下列表:member=[''小甲鱼'',''黑夜'',''迷途'',''怡静'',''秋舞斜阳'']要求将列表修改为:member=[''小甲鱼'',88,''黑夜'',90,''迷途'',85,''怡静'',90,''秋舞斜阳'',88]方法一:使用insert()和append()方法修改列表。方法二:重新创建一个同名字的列表覆盖。?????1.利用for循环打印上边member列表中的每个内容,如图:?????2.上一题打印的样式不是很好,能不能修改一下代码打印成下图的样式呢?【请至少使用两种方法实现】?????3.请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!????回复您的答案即可查看参考答案!????测试题答案:??

本帖隐藏的内容

0.?列表都可以存放一些什么东西???我们说Python的列表是一个打了激素的数组,如果把数组比喻成集装箱,那么Python的列表就是一个大仓库,Ta可以存放我们已经学习过的任何数据类型。>>>mix=[1,‘小甲鱼’,3.14,[1,2,3]]????1.向列表增加元素有哪些方法???这节课我们教过大家三种方法想列表增加元素,分别是:append()、extend()和insert()。????2.append()方法和extend()方法都是向列表的末尾增加元素,请问他们有什么区别???append()方法是将参数作为一个元素增加到列表的末尾。extend()方法则是将参数作为一个列表去扩展列表的末尾。??请看以下示例:

>>>name=[''F'',''i'',''s'',''h'']

>>>name.append(''C'')

>>>name

[''F'',''i'',''s'',''h'',''C'']

>>>name.extend([''.'',''c''])

>>>name

[''F'',''i'',''s'',''h'',''C'',''.'',''c'']

>>>name.append([''o'',''m''])

>>>name

[''F'',''i'',''s'',''h'',''C'',''.'',''c'',[''o'',''m'']]

复制代码

3.member.append([''竹林小溪'',''Crazy迷恋''])和member.extend([''竹林小溪'',''Crazy迷恋''])实现的效果一样吗???不一样,因为怕大家没有仔细看上一题的示例,所以不懂的请看上一题解释。????4.有列表name=[''F'',''i'',''h'',''C''],如果小甲鱼想要在元素''i''和''h''之间插入元素''s'',应该使用什么方法来插入???name.insert(2,''s'')

????动动手答案:??

本帖隐藏的内容

0.自己动手试试看,并分析在这种情况下,向列表添加数据应当采用哪种方法比较好?假设给定以下列表:member=[''小甲鱼'',''黑夜'',''迷途'',''怡静'',''秋舞斜阳'']要求将列表修改为:member=[''小甲鱼'',88,''黑夜'',90,''迷途'',85,''怡静'',90,''秋舞斜阳'',88]方法一:使用insert()和append()方法修改列表。方法二:重新创建一个同名字的列表覆盖。解答:方法一:

member.insert(1,88)

member.insert(3,90)

member.insert(5,85)

member.insert(7,90)

member.append(88)

复制代码

方法二:

member=[''小甲鱼'',88,''黑夜'',90,''迷途'',85,''怡静'',90,''秋舞斜阳'',88]

复制代码

对于这种情况,明显是第二种方法看起来要好一些嘛。不过对于大型的列表,第一种方法可能更合适,所以我们说永远没有最好的,只有最合适的。??????1.利用for循环打印上边member列表中的每个内容

member=[''小甲鱼'',88,''黑夜'',90,''迷途'',85,''怡静'',90,''秋舞斜阳'',88]

foreachinmember:

??print(each)

复制代码

2.上一题打印的样式不是很好,能不能修改一下代码打印成下图的样式呢?【请至少使用两种方法实现】

方法一:

count=0

length=len(member)

whilecount
??print(member[count],member[count+1])

??count+=2



方法二:???

???

foreachinrange(len(member)):

??ifeach%2==0:

??????print(member[each],member[each+1])

复制代码

0.注意,这道题跟上节课的那道题有点儿不同,回答完请上机实验或参考答案。

>>>old=[1,2,3,4,5]

>>>new=old

>>>old=[6]

>>>print(new)

复制代码

如果不上机操作,你觉得会打印什么内容??????1.请问如何将下边这个列表的''小甲鱼''修改为''小鱿鱼''?

list1=[1,[1,2,[''小甲鱼'']],3,5,8,13,18]

复制代码

??2.要对一个列表进行顺序排序,请问使用什么方法?????3.要对一个列表进行逆序排序,请问使用什么方法?????4.列表还有两个内置方法没给大家介绍,不过聪明的你应该可以自己摸索使用的门道吧:copy()和clear()????5.你有听说过列表推导式或列表解析吗???没听过?!没关系,我们现场来学习一下吧,看表达式:

>>>[iiforiinrange(10)]

复制代码

你觉得会打印什么内容?

>>>[iiforiinrange(10)]

[0,1,4,9,16,25,36,49,64,81]

复制代码

居然分别打印了0到9各个数的平方,然后还放在列表里边了有木有?!??列表推导式(Listcomprehensions)也叫列表解析,灵感取自函数式编程语言Haskell。Ta是一个非常有用和灵活的工具,可以用来动态的创建列表,语法如:??[有关A的表达式forAinB]??例如

>>>list1=[x2forxinrange(10)]

>>>list1

[0,1,4,9,16,25,36,49,64,81]

复制代码

相当于

list1=[]

forxinrange(10):

??list1.append(x2)

复制代码

问题:请先在IDLE中获得下边列表的结果,并按照上方例子把列表推导式还原出来。

>>>list1=[(x,y)forxinrange(10)foryinrange(10)ifx%2==0ify%2!=0]

复制代码

6.活学活用:请使用列表推导式补充被小甲鱼不小心涂掉的部分?????????7.请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!????回复您的答案即可查看参考答案!????测试题答案:??

本帖隐藏的内容

0.注意,这道题跟上节课的那道题有点儿不同,回答完请上机实验或参考答案。

>>>old=[1,2,3,4,5]

>>>new=old

>>>old=[6]

>>>print(new)

复制代码

会打印:[1,2,3,4,5]??如有不理解的朋友请看上一讲课后作业的详细答案。????1.请问如何将下边这个列表的''小甲鱼''修改为''小鱿鱼''?

list1=[1,[1,2,[''小甲鱼'']],3,5,8,13,18]

list1[1][2][0]=''小鱿鱼''

复制代码

2.要对一个列表进行顺序排序,请问使用什么方法?

>>>列表名.sort()

复制代码

3.要对一个列表进行逆序排序,请问使用什么方法?

>>>列表名.sort()

>>>列表名.reverse()

复制代码

或者

>>>列表名.sort(reverse=True)

复制代码

4.列表还有两个内置方法没给大家介绍,不过聪明的你应该可以自己摸索使用的门道吧:copy()和clear()??copy()方法跟使用切片拷贝是一样的:

>>>list2=list1.copy()

>>>list2

[1,[1,2,[''小甲鱼'']],3,5,8,13,18]

复制代码

clear()方法用于清空列表的元素,但要注意,清空完后列表仍然还在哦,只是变成一个空列表。

>>>list2.clear()

>>>list2

[]

复制代码

5.问题:请先在IDLE中获得下边列表的结果,并按照上方例子把列表推导式还原出来。

>>>list1=[(x,y)forxinrange(10)foryinrange(10)ifx%2==0ify%2!=0]

复制代码

list1=[]

forxinragne(10):

??foryinrange(10):

??????ifx%2==0:

????????ify%2!=0:

??????????list1.append((x,y))

复制代码

6.活学活用:请使用列表推导式补充被小甲鱼不小心涂掉的部分????

>>>list3=[name+'':''+slogan[2:]forsloganinlist1fornameinlist2ifslogan[0]==name[0]]

复制代码

测试题:??0.请用一句话描述什么是列表?再用一句话描述什么是元组????1.什么情况下你需要使用元组而不是列表???2.当元组和列表掉下水,你会救谁???3.请将下图左边列表的内置方法与右边的注释连线,并圈出元组可以使用的方法。?????4.创建一个元组,什么情况下逗号和小括号必须同时存在,缺一不可???5.x,y,z=1,2,3请问x,y,z是元组吗???6.请写出以下情景中应该使用列表还是元组来保存数据:??

1)游戏中角色的属性:2)你的身份证信息:3)论坛的会员:4)团队合作开发程序,传递给一个你并不了解具体实现的函数的参数:5)航天火箭各个组件的具体配置参数:??6)NASA系统中记录已经发现的行星数据:

7.上节课我们通过课后作业的形式学习到了“列表推导式”,那请问如果我把中括号改为小括号,会不会得到“元组推导式”呢???8.请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!????回复您的答案即可查看参考答案!????测试题答案:??

本帖隐藏的内容

0.请用一句话描述什么是列表?再用一句话描述什么是元组???列表:一个大仓库,你可以随时往里边添加和删除任何东西。??元组:封闭的列表,一旦定义,就不可改变(不能添加、删除或修改)。????1.什么情况下你需要使用元组而不是列表???当我们希望内容不被轻易改写的时候,我们使用元组(把权力关进牢笼)。??当我们需要频繁修改数据,我们使用列表。????2.当元组和列表掉下水,你会救谁???如果是我,我会救列表,因为列表提供了比元组更丰富的内置方法,这相当大的提高了编程的灵活性。??回头来看下元组,元组固然安全,但元组一定创建就无法修改(除非通过新建一个元组来间接修改,但这就带来了消耗),而我们人是经常摇摆不定的,所以元组只有在特殊的情况才用到,平时还是列表用的多。??综上所述,小甲鱼会救列表(列表是美眉)。????3.请将左边列表的内置方法与右边的注释连线,并圈出元组可以使用的方法。?????看吧,元组果然比较悲剧吧,仅有两个方法元组可以使用,其他方法都不行,不信你试试?????4.创建一个元组,什么情况下逗号和小括号必须同时存在,缺一不可???在拼接只有一个元素的元组的时候,例如我们课上举的例题:

>>>temp=(‘小甲鱼’,‘黑夜’,‘迷途’,‘小布丁’)

#如果我想在“黑夜”和“迷途”之间插入“怡静”,我们应该:

>>>temp=temp[:2]+(‘怡静’,)+temp[2:]

复制代码

5.x,y,z=1,2,3请问x,y,z是元组吗???所有的多对象的、逗号分隔的、没有明确用符号定义的这些集合默认的类型都是元组,自己在IDLE中键入以下代码,并体会一下:

>>>x,y,z=1,2,3



>>>type(x)



>>>h=x,y,z



>>>type(h)

复制代码

6.请写出以下情景中应该使用列表还是元组来保存数据:??

1)游戏中角色的属性:列表??2)你的身份证信息:元组??3)论坛的会员:列表??4)团队合作开发程序,传递给一个你并不了解具体实现的函数的参数:元组??5)航天火箭各个组件的具体配置参数:元组??6)NASA系统中记录已经发现的行星数据:列表

7.上节课我们通过课后作业的形式学习到了“列表推导式”,那请问如果我把中括号改为小括号,会不会得到“元组推导式”呢?自己动手试试看再看答案哦^_^??Python3木有“元组推导式”,为嘛?没必要丫,有了“列表推导式”已经足够了。??那为什么“>>>tuple1=(x2forxinrange(10))”不会报错???因为你误打误撞得到了一个生成器:

>>>type(tuple1)



复制代码

关于生成器的概念小甲鱼今后会细讲,你可以尝试这么去访问我们刚刚的生成器:??#注意,Python3开始next()方法改为__next__()哦~

>>>tuple1.__next__()

0

>>>tuple1.__next__()

1

>>>tuple1.__next__()

4

>>>tuple1.__next__()

9

>>>tuple1.__next__()

16

>>>tuple1.__next__()

25

>>>tuple1.__next__()

36

复制代码

??测试题:??0.还记得如何定义一个跨越多行的字符串吗(请至少写出两种实现的方法)????1.三引号字符串通常我们用于做什么使用???2.file1=open(''C:\windows\temp\readme.txt'',''r'')表示以只读方式打开“C:\windows\temp\readme.txt”这个文本文件,但事实上这个语句会报错,知道为什么吗?你会如何修改???3.有字符串:str1=''鱼C资源打包'',请问如何提取出子字符串:''www.fishc.com''??4.如果使用负数作为索引值进行分片操作,按照第三题的要求你能够正确目测出结果吗???5.还是第三题那个字符串,请问下边语句会显示什么内容?

>>>str1[20:-36]

复制代码

6.据说只有智商高于150的鱼油才能解开这个字符串(还原为有意义的字符串):str1=''i2sl54ovvvb4e3bferi32s56h;$c43.sfc67o0cm99''????动动手:??0.请写一个密码安全性检查的脚本代码:check.py??

#密码安全性检查代码##低级密码要求:#??1.密码由单纯的数字或字母组成#??2.密码长度小于等于8位##中级密码要求:#??1.密码必须由数字、字母或特殊字符(仅限:~!@#$%^&()_=-/,.?<>;:[]{}|\)任意两种组合#??2.密码长度不能低于8位##高级密码要求:#??1.密码必须由数字、字母及特殊字符(仅限:~!@#$%^&()_=-/,.?<>;:[]{}|\)三种组合#??2.密码只能由字母开头#??3.密码长度不能低于16位

程序演示:????????1.请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!????回复您的答案即可查看参考答案!????测试题答案:??

本帖隐藏的内容

0.还记得如何定义一个跨越多行的字符串吗(请至少写出两种实现的方法)???方法一:??>>>str1=''''''待我长发及腰,将军归来可好?此身君子意逍遥,怎料山河萧萧。天光乍破遇,暮雪白头老。寒剑默听奔雷,长枪独守空壕。醉卧沙场君莫笑,一夜吹彻画角。江南晚来客,红绳结发梢。''''''??方法二:??>>>str2=''待卿长发及腰,我必凯旋回朝。\昔日纵马任逍遥,俱是少年英豪。\东都霞色好,西湖烟波渺。\执枪血战八方,誓守山河多娇。\应有得胜归来日,与卿共度良宵。\盼携手终老,愿与子同袍。''??方法三:??>>>str3=(''待卿长发及腰,我必凯旋回朝。''''昔日纵马任逍遥,俱是少年英豪。''''东都霞色好,西湖烟波渺。''''执枪血战八方,誓守山河多娇。''''应有得胜归来日,与卿共度良宵。''''盼携手终老,愿与子同袍。'')??????1.三引号字符串通常我们用于做什么使用???三引号字符串不赋值的情况下,通常当作跨行注释使用,例如:

''''''这是一个三引号字符串用于注释的例子,

例子虽然只是简简单单的一句话,

却毫无遮掩地体现了作者用情至深,

所谓爱至深处情至简!''''''



print("IloveFishC.com!")

复制代码

2.file1=open(''C:\windows\temp\readme.txt'',''r'')表示以只读方式打开“C:\windows\temp\readme.txt”这个文本文件,但事实上这个语句会报错,知道为什么吗?你会如何修改???会报错是因为在字符串中,我们约定“\t”和“\r”分别表示“横向制表符(TAB)”和“回车符”(详见:http://bbs.fishc.com/thread-39140-1-1.html),因此并不会按照我们计划的路径去打开文件。??Python为我们铺好了解决的道路,只需要使用原始字符串操作符(R或r)即可:

>>>file1=open(r''C:\windows\temp\readme.txt'',''r'')

复制代码

3.有字符串:str1=''鱼C资源打包'',请问如何提取出子字符串:''www.fishc.com''

>>>str1[16:29]

复制代码

4.如果使用负数作为索引值进行分片操作,按照第三题的要求你能够正确目测出结果吗?

>>>str1[-45:-32]

复制代码

5.还是第三题那个字符串,请问下边语句会显示什么内容?

>>>str1[20:-36]

复制代码

''fishc'',加入了负数索引,问题变得有些复杂,不过自己多尝试几次就可以熟练掌握了。???????6.据说只有智商高于150的鱼油才能解开这个字符串(还原为有意义的字符串):str1=''i2sl54ovvvb4e3bferi32s56h;$c43.sfc67o0cm99''

>>>str1[::3]

复制代码

??动动手答案:???

本帖隐藏的内容

0.请写一个密码安全性检查的脚本代码:check.py

#密码安全性检查代码

#

#低级密码要求:

#??1.密码由单纯的数字或字母组成

#??2.密码长度小于等于8位

#

#中级密码要求:

#??1.密码必须由数字、字母或特殊字符(仅限:~!@#$%^&()_=-/,.?<>;:[]{}|\)任意两种组合

#??2.密码长度不能低于8位

#

#高级密码要求:

#??1.密码必须由数字、字母及特殊字符(仅限:~!@#$%^&()_=-/,.?<>;:[]{}|\)三种组合

#??2.密码只能由字母开头

#??3.密码长度不能低于16位



symbols=r''''''`!@#$%^&()_+-=/{}[]\|''";:/?,.<>''''''

chars=''abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ''

nums=''0123456789''



passwd=input(''请输入需要检查的密码组合:'')



#判断长度

length=len(passwd)



while(passwd.isspace()orlength==0):

??passwd=input("您输入的密码为空(或空格),请重新输入:")



iflength<=8:

??flag_len=1

elif8
??flag_len=2

else:

??flag_len=3



flag_con=0



#判断是否包含特殊字符

foreachinpasswd:

??ifeachinsymbols:

??????flag_con+=1

??????break

???

#判断是否包含字母

foreachinpasswd:

??ifeachinchars:

??????flag_con+=1

??????break



#判断是否包含数字

foreachinpasswd:

??ifeachinnums:

??????flag_con+=1

??????break???



#打印结果

while1:

??print("您的密码安全级别评定为:",end='''')

??ifflag_len==1orflag_con==1:

??????print("低")

??elifflag_len==2orflag_con==2:

??????print("中")

??else:

??????print("高")

??????print("请继续保持")

??????break



??print("请按以下方式提升您的密码安全级别:\n\

??\t1.密码必须由数字、字母及特殊字符三种组合\n\

??\t2.密码只能由字母开头\n\

??\t3.密码长度不能低于16位''")

??break

复制代码



0.根据说明填写相应的字符串格式化符号

??符??号 ???说????明 ????% ???格式化字符及其ASCII码 ????% ???格式化字符串 ????% ???格式化整数 ????% ???格式化无符号八进制数 ????% ???格式化无符号十六进制数 ????% ???格式化无符号十六进制数(大写) ????% ???格式化定点数,可指定小数点后的精度 ????% ???用科学计数法格式化定点数 ????% ???根据值的大小决定使用%f或者%e ????% ???根据值的大小决定使用%F或者%E ??1.请问以下这行代码会打印什么内容?

>>>"{{1}}".format("不打印","打印")

复制代码

2.以下代码中,a,b,c是什么参数?

>>>"{a}love{b}.{c}".format(a="I",b="FishC",c="com")

''IloveFishC.com''

复制代码

3.以下代码中,{0},{1},{2}是什么参数?

>>>"{0}love{1}.{2}".format("I","FishC","com")

''IloveFishC.com''

复制代码

4.如果想要显示Pi=3.14,format前边的字符串应该怎么填写呢?

''''.format(''Pi='',3.1415)

复制代码

动动手:0.编写一个进制转换程序,程序演示如下(提示,十进制转换二进制可以用bin()这个BIF):???????1.请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!????第十五课

????测试题答案:????

本帖隐藏的内容

0.根据说明填写相应的字符串格式化符号

??符??号 ???说????明 ????%c ???格式化字符及其ASCII码 ????%s ???格式化字符串 ????%d ???格式化整数 ????%o ???格式化无符号八进制数 ????%x ???格式化无符号十六进制数 ????%X ???格式化无符号十六进制数(大写) ????%f ???格式化定点数,可指定小数点后的精度 ????%e ???用科学计数法格式化定点数 ????%E ???作用同%e,用科学计数法格式化定点数 ????%g ???根据值的大小决定使用%f或者%e ????%G ???作用同%g,根据值的大小决定使用%F或者%E ???????1.请问以下这行代码会打印什么内容?

>>>"{{1}}".format("不打印","打印")

''{1}''

复制代码

2.以下代码中,a,b,c是什么参数?

>>>"{a}love{b}.{c}".format(a="I",b="FishC",c="com")

''IloveFishC.com''

复制代码

关键字参数?????3.以下代码中,{0},{1},{2}是什么参数?

>>>"{0}love{1}.{2}".format("I","FishC","com")

''IloveFishC.com''

复制代码

位置参数?????4.如果想要显示Pi=3.14,format前边的字符串应该怎么填写呢?

>>>''{0}{1:.2f}''.format(''Pi='',3.1415)

''Pi=3.14''

复制代码

动动手答案:

本帖隐藏的内容

0.编写一个进制转换程序

q=True

whileq:

??num=input(''请输入一个整数(输入Q结束程序):'')

??ifnum!=''Q'':

??????num=int(num)

??????print(''十进制->十六进制:%d->0x%x''%(num,num))

??????print(''十进制->八进制:%d->0o%o''%(num,num))

??????print(''十进制->二进制:%d->''%num,bin(num))

??else:

??????q=False

复制代码



《零基础入门学习Python》视频下载地址:传送门???测试题:??0.我们根据列表、元祖和字符串的共同特点,把它们三统称为什么???1.请问分别使用什么BIF,可以把一个可迭代对象转换为列表、元祖和字符串???2.你还能复述出“迭代”的概念吗???3.你认为调用max(''IloveFishC.com'')会返回什么值?为什么???4.哎呀呀,现在的小屁孩太调皮了,邻居家的孩子淘气,把小甲鱼刚写好的代码画了个图案,麻烦各位鱼油恢复下啊,另外这家伙画的是神马吗?怎么那么眼熟啊!??????????????动动手:??0.猜想一下min()这个BIF的实现过程?????1.视频中我们说sum()这个BIF有个缺陷,就是如果参数里有字符串类型的话就会报错,请写出一个新的实现过程,自动“无视”参数里的字符串并返回正确的计算结果??????2.请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!????回复您的答案即可查看参考答案!????测试题答案:????

本帖隐藏的内容

0.我们根据列表、元祖和字符串的共同特点,把它们三统称为什么???序列,因为他们有以下共同点:???1)都可以通过索引得到每一个元素2)默认索引值总是从0开始(当然灵活的Python还支持负数索引)3)可以通过分片的方法得到一个范围内的元素的集合4)有很多共同的操作符(重复操作符、拼接操作符、成员关系操作符)?????1.请问分别使用什么BIF,可以把一个可迭代对象转换为列表、元祖和字符串?????list([iterable])把可迭代对象转换为列表??tuple([iterable])把可迭代对象转换为元祖??str(obj)??把对象转换为字符串??例如:

>>>temp=''IloveFishC.com!''

>>>list(temp)

[''I'','''',''l'',''o'',''v'',''e'','''',''F'',''i'',''s'',''h'',''C'',''.'',''c'',''o'',''m'',''!'']

复制代码

2.你还能复述出“迭代”的概念吗?所谓迭代,是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。每一次对过程的重复被称为一次“迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。?????3.你认为调用max(''IloveFishC.com'')会返回什么值?为什么????会返回:''v'',因为字符串在计算机中是以ASCII码的形式存储(ASCII对照表:http://bbs.fishc.com/thread-41199-1-1.html),参数中ASCII码值最大的是''v''对应的118。?????4.哎呀呀,现在的小屁孩太调皮了,邻居家的孩子淘气,把小甲鱼刚写好的代码画了个图案,麻烦各位鱼油恢复下啊,另外这家伙画的是神马吗?怎么那么眼熟啊!??

name=input(''请输入待查找的用户名:'')

score=[[''迷途'',85],[''黑夜'',80],[''小布丁'',65],[''福禄娃娃'',95],[''怡静'',90]]

IsFind=False



foreachinscore:

??ifnameineach:

??????print(name+''的得分是:'',each[1])

??????IsFind=True

??????break

???

ifIsFind==False:

??print(''查找的数据不存在!'')

复制代码

?????动动手答案:??

本帖隐藏的内容

0.猜想一下min()这个BIF的实现过程

defmin(x):

??least=x[0]



??foreachinx:

??????ifeach
????????least=each



??returnleast



print(min(''123456789''))

复制代码

注:关于函数的定义和使用在下一讲的课程中讲解,目前只需要理解该BIF实现的原理即可。?????1.视频中我们说sum()这个BIF有个缺陷,就是如果参数里有字符串类型的话就会报错,请写出一个新的实现过程,自动“无视”参数里的字符串并返回正确的计算结果

defsum(x):

??result=0

???

??foreachinx:

??????if(type(each)==int)or(type(each)==float):

????????result+=each

??????else:

????????continue



??returnresult



print(sum([1,2.1,2.3,''a'',''1'',True]))

复制代码

2.请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!

????0.你有听说过DRY吗??????1.都是重复一段代码,为什么我要使用函数(而不使用简单的拷贝黏贴)呢?????2.函数可以有多个参数吗?????3.创建函数使用什么关键字,要注意什么?????4.请问这个函数有多少个参数?

defMyFun((x,y),(a,b)):

??returnxy-ab

复制代码

5.请问调用以下这个函数会打印什么内容?

>>>defhello():

??????print(''HelloWorld!'')

??????return

??????print(''WelcomeToFishC.com!'')

复制代码

动动手:????0.编写一个函数power()模拟内建函数pow(),即power(x,y)为计算并返回x的y次幂的值。???????1.编写一个函数,利用欧几里得算法(脑补链接)求最大公约数,例如gcd(x,y)返回值为参数x和参数y的最大公约数。??????2.编写一个将十进制转换为二进制的函数,要求采用“除2取余”(脑补链接)的方式,结果与调用bin()一样返回字符串形式。????????3.请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!????回复您的答案即可查看参考答案!?????测试题答案:????

本帖隐藏的内容

0.你有听说过DRY吗??????DRY是程序员们公认的指导原则:Don''tRepeatYourself.?快快武装你的思维吧,拿起函数,不要再去重复拷贝一段代码了!?????1.都是重复一段代码,为什么我要使用函数(而不使用简单的拷贝黏贴)呢?????使用函数:

0)可以降低代码量(调用函数只需要一行,而拷贝黏贴需要N倍代码)1)可以降低维护成本(函数只需修改def部分内容,而拷贝黏贴则需要每一处出现的地方都作修改)2)使序更容易阅读(没有人会希望看到一个程序重复一万行“IloveFishC.com”)

2.函数可以有多个参数吗?????可以的,理论上你想要有多少个就可以有多少个,只不过如果函数的参数过多,在调用的时候出错的机率就会大大提高,因而写这个函数的程序员也会被相应的问候祖宗,所以,尽量精简吧,在Python的世界里,精简才是王道!????????3.创建函数使用什么关键字,要注意什么????使用“def”关键字,要注意函数名后边要加上小括号“()”,然后小括号后边是冒号“:”,然后缩进部分均属于函数体的内容,例如:

defMyFun():

??#我是函数体

??#我也是函数体

??#我们都属于函数MyFun()



#噢,我不属于MyFun()函数的了

复制代码

4.请问这个函数有多少个参数?

defMyFun((x,y),(a,b)):

??returnxy-ab

复制代码

如果你回答两个,那么恭喜你错啦,答案是0,因为类似于这样的写法是错误的!我们分析下,函数的参数需要的是变量,而这里你试图用“元祖”的形式来传递是不可行的。????我想你如果这么写,你应该是要表达这么个意思:

>>>defMyFun(x,y):

??????returnx[0]x[1]-y[0]y[1]



>>>MyFun((3,4),(1,2))

10

复制代码

5.请问调用以下这个函数会打印什么内容?

>>>defhello():

??????print(''HelloWorld!'')

??????return

??????print(''WelcomeToFishC.com!'')

复制代码

会打印:

>>>hello()

HelloWorld!

复制代码

因为当Python执行到return语句的时候,Python认为函数到此结束,需要返回了(尽管没有任何返回值)。

??????????动动手答案:??

本帖隐藏的内容

0.编写一个函数power()模拟内建函数pow(),即power(x,y)为计算并返回x的y次幂的值。

defpower(x,y):

??result=1

???

??foriinrange(y):

??????result=x



??returnresult



print(power(2,3))

复制代码

1.编写一个函数,利用欧几里得算法(脑补链接)求最大公约数,例如gcd(x,y)返回值为参数x和参数y的最大公约数。

defgcd(x,y):

??whiley:

??????t=x%y

??????x=y

??????y=t



??returnx

???

print(gcd(4,6))

复制代码

2.编写一个将十进制转换为二进制的函数,要求采用“除2取余”(脑补链接)的方式,结果与调用bin()一样返回字符串形式。

defDec2Bin(dec):

??temp=[]

??result=''''

???

??whiledec:

??????quo=dec%2

??????dec=dec//2

??????temp.append(quo)



??whiletemp:

??????result+=str(temp.pop())

???

??returnresult



print(Dec2Bin(62))







第十八课







































第19课





































第20课





第21课





第22课







第23、24课





第25课





第26课





第27课





第28课







第29课







第30课







第31课







第32课



第33课





第34课





第35课





第36课





第37课





第38课







第39课





第40课



第41课







第42课







第43课



第44课







第45课





第46课









第47课







第48课







第49课





第50课























献花(0)
+1
(本文系海漩涡首藏)