鱼c小甲鱼零基础学python全套课后题带目录
四年级 记叙文 29953字 80417人浏览 1192417991

Python 习题

1 / 237

目录 第一课 .............................................................. 1

第二课 .............................................................. 2

第三课 .............................................................. 4

第四课 .............................................................. 4

第五课 .............................................................. 5

第六课 ............................................................. 17

第八课 ............................................................. 21

第九课 ............................................................. 24

第十课 ............................................................. 30

第十二课 ........................................................... 35

第十三课 ........................................................... 39

第十四课 ........................................................... 44

第十五课 ........................................................... 53

第十六课 ........................................................... 55

第十七课 ........................................................... 59

第十八课 ........................................................... 64

第十九课 ........................................................... 68

第20课 ............................................................ 78

第21课 ............................................................ 88

第22课 ............................................................ 92

第23、24课 ........................................................ 94

第25课 ............................................................ 96 第26课 ........................................................... 101 第27课 ........................................................... 105 第28课 ........................................................... 107 第29课 ........................................................... 111 第30课 ........................................................... 118 第31课 ........................................................... 123 第32课 ........................................................... 126 第33课 ........................................................... 131 第34课 ........................................................... 137 第35课 ........................................................... 145 第36课 ........................................................... 151 第37课 ........................................................... 154 第38课 ........................................................... 162 第39课 ........................................................... 170 第40课 ........................................................... 172 第41课 ........................................................... 177 第42课 ........................................................... 182 第43课 ........................................................... 189 第44课 ........................................................... 194

Python 习题

2 / 237

第45课 ........................................................... 201 第46课 ........................................................... 208 第47课 ........................................................... 217 第48课 ........................................................... 221 第49课 ........................................................... 225 第50课 ........................................................... 229

Python 习题

1 / 237

第一课

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

Python 是脚本语言

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

也让脚本语言另有一些属于脚本语言的特性:

∙ 语法和结构通常比较简单

∙ 学习和使用通常比较简单

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

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

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

1. IDLE 是什么?

IDLE 是一个Python Shell,shell 的意思就是“外壳”,基本上来说,就是一个通过键入文本与程序交互的途径!像我们Windows 那个cmd 窗口,像Linux 那个黑乎乎的命令窗口,他们都是shell ,利用他们,我们就可以给操作系统下达命令。同样的,我们可以利用IDLE 这个shell 与Python 进行互动。

2. print() 的作用是什么?

print() 会在输出窗口中显示一些文本(在这一讲中,输出窗口就是IDLE shell窗口)。

3. Python 中表示乘法的符号是什么?

Python 中的乘号是*(星号)。

Python 习题

2 / 237

4. 为什么 >>>print('I love fishc.com ' * 5) 可以正常执行,但 >>>print('I love fishc.com ' + 5) 却报错?

在 Python 中不能把两个完全不同的东西加在一起,比如说数字和文本,正是这个原因,>>>print('I love fishc.com ' + 5) 才会报错。这就像是在说“五只小甲鱼加上苍井空会是多少?”一样没有多大意义,结果可能是五,可能是六,也可能是八!不过乘以一个整数来翻倍就具有一定的意义了,前边的例子就是将 "I love fishc.com" 这个字符串打印五次。

5. 如果我需要在一个字符串中嵌入一个双引号,正确的做法是?

你有两个选择:可以利用反斜杠(\)对双引号转义:\",或者用单引号引起这个字符串。例如:' I l"o"ve fishc.com '。

6. 为什么我们要使用 Python3?Python2到底有什么问题?看起来很多程序员依然都在使用Python2?

确实还有相当多的程序员在使用 Python2,不过 Python3 才是 Python 发展的未来,就像 XP 和 WIN7 一样。在《零基础入门学习Python 》的系列教程准备中,小甲鱼发觉 Python3 中的新特性确实很妙,很值得进行深入学习!你也不用担心,如果你了解了 Python3,Python2 的代码阅读对于你来说根本不成问题!

第二课 0. 什么是BIF ?

BIF 就是 Built-in Functions,内置函数。为了方便程序员快速编写脚本程序(脚本就是要编程速度快快快!!!),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 的

Python 习题

3 / 237

功能描述。哦,答案应该是 68 个,不信你自己数数看,你们肯定没有自己完成作业就来看答案!哼~ T_T

2. 在 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 条件中赋值,所以 if c = 1: 会报错!

小甲鱼觉得这种做法可以非常有效的防止程序员因为打炮、熬夜等问题导致粗心的 BUG ,并且这类 BUG 杀伤力都巨大!

5. 你听说过“拼接”这个词吗?

在一些编程语言,我们可以将两个字符串“相加”在一起,如:'I' + 'Love' + 'FishC' 会得到 'ILoveFishC' ,在 Python 里,这种做法叫做拼接字符串。

Python 习题

4 / 237

第三课

0. 编写程序:hello.py ,要求用户输入姓名并打印“你好,姓名!”

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

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

复制代码

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

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

2. num = int(temp) 3. if 1 <= num <= 100:

4. print('你妹好漂亮^_^')

5. else:

6. print('你大爷好丑T_T')

复制代码

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

1. >>>str = r'C:\Program Files\FishC\Good''\\'

复制代码

第四课

测试题:

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

1. while 'C':

2. print('我爱鱼C!')

复制代码

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

Python 习题

5 / 237

1. i = 10 2. while i:

3. print('我爱鱼C!')

4. i = i - 1

复制代码

2. 请写出与 10 < cost < 50 等价的表达式

3. Python3 中,一行可以书写多个语句吗?

4. Python3 中,一个语句可以分成多行书写吗?

5. 请问Python 的 and 操作符 和C 语言的 && 操作符 有何不同?【该题针对有C 或C++基础的朋友】

6. 听说过“短路逻辑(short-circuit logic)”吗?

动动手:

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

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

第五课

测试题:

0. 在 Python 中,int 表示整型,那你还记得 bool、float 和 str 分别表示什么吗?

1. 你知道为什么布尔类型(bool)的 True 和 False 分别用 1 和 0 来代替吗?

2. 使用 int() 将小数转换为整数,结果是向上取整还是向下取整呢?

3. 我们人类思维是习惯于“四舍五入”法,你有什么办法使得 int() 按照“四舍五

Python 习题

6 / 237

入”的方式取整吗?

4. 取得一个变量的类型,视频中介绍可以使用 type() 和 isinstance(),你更倾向于使用哪个?

5. Python3 可以给变量命名中文名,知道为什么吗?

6. 【该题针对零基础的鱼油】你觉得这个系列教学有难度吗?

动动手:

0. 针对视频中小甲鱼提到的小漏洞,再次改进我们的小游戏:当用户输入错误类型的时候,及时提醒用户重新输入,防止程序崩溃。

如果你尝试过以下做法,请举下小手: 1. temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:")

2. # 这种想法是因为type(1)会返回<class 'int'>,如果type(temp)返回结果一致说明输入是整

数。

3. while type(temp) != type(1):

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

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

复制代码

或者可能这样:

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

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

3. while not isinstance(temp, int):

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

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

复制代码

以上方法的思路是正确的,不过似乎忽略了一点儿:就是input()的返回值始终是字符串,所以type(temp)永远是<class 'str'>!

其实有蛮多的做法可以实现的,不过就目前我们学习过的内容来看,还不足够。

所以,在让大家动手完成这道题之前,小甲鱼介绍一点新东西给大家!

Python 习题

7 / 237

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 = 'I LOVE FISHC'

>>> s.isupper()

>>> True

好了,文字教程就到这里,大家赶紧趁热打铁,改造我们的小游戏吧!

1. 写一个程序,判断给定年份是否为闰年。(注意:请使用已学过的 BIF 进行灵活运用)

这样定义闰年的:能被4整除但不能被100整除, 或者能被400整除都是闰年。

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

测试题答案:

0. 在 Python 中,int 表示整型,那你还记得 bool、float 和 str 分别表示什么吗?

bool 表示布尔类型

float 表示浮点型

str 表示字符串

Python 习题

8 / 237

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) == 5

5.6 “四舍五入”结果为:6,int(5.6+0.5) == 6

大家看明白了吗?

4. 取得一个变量的类型,视频中介绍可以使用 type() 和 isinstance(),你更倾向于使用哪个?

建议使用 isinstance(),因为它的返回结果比较直接,另外 type() 其实并没有你想象的那么简单,我们后边会讲到。

5. Python3 可以给变量命名中文名,知道为什么吗?

Pyhton3 源码文件默认使用utf-8编码(支持中文),这就使得以下代码是合法的: >>> 小甲鱼 = '我爱你'

>>> print(小甲鱼)

>>> 我爱你

6. 【该题针对零基础的鱼油】你觉得这个系列教学有难度吗?

Python 习题

9 / 237

如果有不懂的问题,请在此处提问:http://bbs.fishc.com/forum-173-1.html

另外需要小甲鱼在视频讲解的方面做哪方面改进请回帖告之!

动动手答案:

0. 针对视频中小甲鱼提到的小漏洞,再次改进我们的小游戏:当用户输入错误类型的时候,及时提醒用户重新输入,防止程序崩溃。

需要注意的地方在代码中已经注释!

1. import random

2. times = 3

3. secret = random.randint(1,10)

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

5. guess = 0

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

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

8. temp = input()

9. while not temp.isdigit():

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

11. guess = int(temp)

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

13. if guess == secret:

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

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

16. else:

17. if guess > secret:

18. print("哥,大了大了~~~")

19. else:

20. print("嘿,小了,小了~~~")

21. if times > 0:

Python 习题

10 / 237

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

23. else:

24. print("机会用光咯T_T")

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

复制代码

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

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

2. while not temp.isdigit():

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

4.

5. year = int(temp)

6. if year/400 == int(year/400):

7. print(temp + ' 是闰年!')

8. else:

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

10. print(temp + ' 是闰年!')

11. else:

12. print(temp + ' 不是闰年!')

复制代码

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

Python 习题

11 / 237

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

回复您的答案即可查看参考答案!

测试题答案:

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

死循环,会一直打印“我爱鱼C !”(嗯,这也算是永远支持鱼C 的方法之一),直到崩溃或者用户按下快捷键 CTRL + C(强制结束)

造成死循环的原因是 while 后边的条件永远为真(True),在 Python 看来,只有以下内容会被看作假(注意冒号括号里边啥都没有,连空格都不要有!):False None 0 "" '' () [] {}

Python 习题

12 / 237

其他一切都被解释为真!

不妨试试:

1. while '':

2. print('进入循环')

3. print('退出循环')

复制代码

或者

1. while Flase:

2. print('进入循环')

3. print('退出循环')

复制代码

或者

1. while 0:

2. print('进入循环')

3. print('退出循环')

复制代码

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

会打印 10 次。

2. 请写出与 10 < cost < 50 等价的表达式

(10 < cost) and (cost < 50)

3. Python3 中,一行可以书写多个语句吗?

可以,语句之间用分号隔开即可,不妨试试: >>> print('I love fishc');print('very much!')

Python 习题

13 / 237

4. Python3 中,一个语句可以分成多行书写吗?

可以,一行过长的语句可以使用反斜杠或者括号分解成几行,不妨试试:

1. >>> 3 > 4 and \

2. 1 < 2

复制代码

或者

1. >>> ( 3 > 4 and

2. 1 < 2 )

复制代码

5. 【该题针对有C 或C++基础的朋友】请问Python 的 and 操作符 和C 语言的 && 操作符 有何不同?

有图有真相(C\C++ VS Python):

Python 习题 14 / 237 VS

Python 习题

15 / 237

6. 听说过“短路逻辑(short-circuit logic)”吗?

逻辑操作符有个有趣的特性:在不需要求值的时候不进行操作。这么说可能比较“高深”,举个例子,表达式 x and y,需要 x 和 y 两个变量同时为真(True)的时候,结果才为真。因此,如果当 x 变量得知是假(False)的时候,表达式就会立刻返回 False ,而不用去管 y 变量的值。

这种行为被称为短路逻辑(short-circuit logic)或者惰性求值(lazy evaluation),这种行为同样也应用与 or 操作符,这个后边的课程小甲鱼会讲到,不急。

实际上,Python 的做法是如果 x 为假,表达式会返回 x 的值(0),否则它就会返回 y 的值(例子参考楼上那题)。

Python 习题

16 / 237

动动手答案:

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

需要注意的地方在代码中已经注释!

1. import random

2. times = 3

3. secret = random.randint(1,10)

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

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

6. guess = 0

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

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

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

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

11. temp = input()

12. guess = int(temp)

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

14. if guess == secret:

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

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

17. else:

18. if guess > secret:

19. print("哥,大了大了~~~")

20. else:

21. print("嘿,小了,小了~~~")

22. if times > 0:

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

24. else:

25. print("机会用光咯T_T")

Python 习题

17 / 237

26. print("游戏结束,不玩啦^_^") 复制代码

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

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

2. number = int(temp)

3. i = 1

4. while number:

5. print(i)

6. i = i + 1

7. number = number - 1

复制代码

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

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

2. number = int(temp)

3. while number:

4. i = number - 1

5. while i:

6. print(' ', end = '')

7. i = i - 1

8. j = number

9. while j:

10. print('*', end = '')

11. j = j - 1

12. print()

13. number = number - 1

复制代码

第六课

Python 习题

18 / 237

测试题:

0. Python 的 floor 除法现在使用 “//” 实现,那 3.0 // 2.0 您目测会显示什么内容呢?

1. a < b < c 事实上是等于?

2. 不使用 IDLE,你可以轻松说出 5 ** -2 的值吗?

3. 如何简单判断一个数是奇数还是偶数?

4. 请用最快速度说出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9

5. 还记得我们上节课那个求闰年的作业吗?如果还没有学到“求余”操作,还记得用什么方法可以“委曲求全”代替“%”的功能呢?

动动手:

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

1. 我们说过现在的 Python 可以计算很大很大的数据,但是...... 真正的大数据计算可是要靠刚刚的硬件滴,不妨写一个小代码,让你的计算机为之崩溃?

2.

爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。

(小甲鱼温馨提示:步子太大真的容易扯着蛋~~~)

题目:请编程求解该阶梯至少有多少阶?

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

回复您的答案即可查看参考答案!

Python 习题

19 / 237

测试题答案:

0. Python 的 floor 除法现在使用 “//” 实现,那 3.0 // 2.0 您目测会显示什么内容呢?

如果回答是 1.5 那么很遗憾,您受到 C 语言的影响比较大,Python 这里会义无反顾地执行 floor 除法原则,答案是:1.0

1. a < b < c 事实上是等于?

(a < b) and (b < c)

2. 不使用 IDLE,你可以轻松说出 5 ** -2 的值吗?

0.04,也就是 1/25

幂运算操作符比其左侧的一元操作符优先级高,比其右侧的一元操作符优先级低。

3. 如何简单判断一个数是奇数还是偶数?

使用求余可以简单得到答案:能被 2 整除为偶数,所以 x % 2 == 0,否则为奇数。

4. 请用最快速度说出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9

如果你的回答是 0,那么小甲鱼很开心你中招了!

答案是:4

not or and 的优先级是不同的:not > and > or

我们按照优先级给它们加上括号:(not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9)

== 0 or 0 or 4 or 6 or 9

== 4

为啥是 4?

Python 习题

20 / 237

大家还记得第四讲作业提到的“短路逻辑”吗?3 and 4 == 4,而 3 or 4 == 3。 所以答案是:4

温馨提示:为了更好的表达你的程序,小甲鱼再次呼吁有些括号还是不能省下的,毕竟不是所有程序员都跟你一样都将优先级烂透于心的。

5. 还记得我们上节课那个求闰年的作业吗?如果还没有学到“求余”操作,还记得用什么方法可以“委曲求全”代替“%”的功能呢?

因为上节课我们还没有教大家“求余”的操作,所以小甲鱼使用了“if year/400 == int(year/400)”这样的方式来“委曲求全”。

动动手答案:

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

1. i = 0

2. while i <= 100:

3. if i % 2 != 0:

4. print(i, end=' ') 5. i += 1

6. else:

7. i += 1

复制代码

1. 我们说过现在的 Python 可以计算很大很大的数据,但是...... 真正的大数据计算可是要靠刚刚的硬件滴,不妨写一个小代码,让你的计算机为之崩溃?

print(2 ** 2 ** 32)

# 一般很多机子都会在一会儿之后:Memory Overflow,内存不够用。

# 设计到幂操作,结果都是惊人滴。

2. 题目:请编程求解该阶梯至少有多少阶?

1. x = 7

Python 习题

21 / 237

2. i = 1

3. flag = 0

4.

5. while i <= 100:

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

7. flag = 1

8. else:

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

10. i += 1

11.

12. if flag == 1:

13. print('阶梯数是:', x)

14. else:

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

复制代码

第八课

0. if not (money < 100): 上边这行代码相当于?

1. assert 的作用是什么?

2. 假设有 x = 1,y = 2,z = 3,请问如何快速将三个变量的值互相交换?

3. 猜猜 (x < y and [x] or [y])[0] 实现什么样的功能?

4. 你听说过成员资格运算符吗?

动动手:

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

题目备忘:按照100分制,90分以上成绩为A ,80到90为B ,60到80为C ,60以下为D ,写一个程序,当用户输入分数,自动转换为ABCD 的形式打印。

Python 习题

22 / 237

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

1. x, y, z = 6, 5, 4

2. if x < y:

3. small = x

4. if z < small:

5. small = z

6. elif y < z:

7. small = y

8. else:

9. small = z

复制代码

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

回复您的答案即可查看参考答案!

测试题答案:

0. if not (money < 100): 这行代码相当于?

if money >= 100:

1. assert 的作用是什么?

assert 这个关键字我们称之为“断言”,当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError 的异常。

什么情况下我们会需要这样的代码呢?当我们在测试程序的时候就很好用,因为与其让错误的条件导致程序今后莫名其妙地崩溃,不如在错误条件出现的那一瞬间我们实现“自爆”。

Python 习题

23 / 237

一般来说我们可以用Ta 再程序中置入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert 关键字就非常有用了。

2. 假设有 x = 1,y = 2,z = 3,请问如何快速将三个变量的值互相交换?

x, y, z = z, y, x

3. 猜猜 (x < y and [x] or [y])[0] 实现什么样的功能?

这其实是 Python 的作者还没有为 Python 加入三元操作符之前,Python 社区的小伙伴们灵活的使用 and 和 or 搭配来实现三元操作符的功能,这里边有涉及到列表和切片的知识,这部分知识很快就会讲解,迫不及待的朋友可以先稍微预习下。

4. 你听说过成员资格运算符吗?

Python 有一个成员资格运算符:in ,用于检查一个值是否在序列中,如果在序列中返回 True,否则返回 False。

例如:

1. >>> name = '小甲鱼'

2. >>> '鱼' in name

3. True

4. >>> '肥鱼' in name

5. False

复制代码

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

动动手答案:

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

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

Python 习题

24 / 237

2. if 80 > score >= 60:

3. print('C')

4. elif 90 > score >= 80:

5. print('B') 6. elif 60 > score >= 0: 7. print('D')

8. elif 100 >= score >= 90:

9. print('A')

10. else:

11. print('输入错误!')

复制代码

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

1. small = x if (x < y and x < z) else (y if y < z else z)

复制代码

第九课

0. 下面的循环会打印多少次"I Love FishC"?

1. for i in range(0, 10, 2):

2. print('I Love FishC') 复制代码

1. 下面的循环会打印多少次"I Love FishC"?

1. for i in 5:

2. print('I Love FishC')

复制代码

2. 回顾一下 break 和 continue 在循环中起到的作用?

3. 请谈下你对列表的理解?

4. 请问 range(10) 生成哪些数?

Python 习题

25 / 237

5. 目测以下程序会打印什么?

1. while True:

2. while True:

3. break

4. print(1)

5. print(2)

6. break

7. print(3)

复制代码

6. 什么情况下我们要使循环永远为真?

7. 【学会提高代码的效率】你的觉得以下代码效率方面怎样?有没有办法可以大幅度改进(仍然使用while) ?

1. i = 0 2. string = 'ILoveFishC.com'

3. while i < len(string)):

4. print(i)

5. i += 1

复制代码

动动手:

细节决定成败,看答案前记得自己先敲代码!

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

程序演示如图:

Python 习题

26 / 237

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

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

2. 三色球问题

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

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

回复您的答案即可查看参考答案!

Python 习题

27 / 237

测试题答案:

0. 下面的循环会打印多少次"I Love FishC"?

1. for i in range(0, 10, 2):

2. print('I Love FishC')

复制代码

5 次,因为从 0 开始,到 10 结束,步进为 2。

1. 下面的循环会打印多少次"I Love FishC"?

1. for i in 5:

2. print('I Love FishC')

复制代码

会报错,上节课的课后习题我们提到了 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. 目测以下程序会打印什么?

1. while True:

2. while True:

Python 习题

28 / 237

3. break

4. print(1)

5. print(2)

6. break

7. print(3)

复制代码

会打印:

2

3

因为 break 只能跳出一层循环,记住咯!

6. 什么情况下我们要使循环永远为真?

while Ture:

循环体

同样用于游戏实现,因为游戏只要运行着,就需要时刻接收用户输入,因此使用永远为真确保游戏“在线”。操作系统也是同样的道理,时刻待命,操作系统永远为真的这个循环叫做消息循环。另外,许多通讯服务器的客户端/服务器系统也是通过这样的原理来工作的。

所以永远为“真”虽然是“死循环”,但不一定是坏事,再说了,我们可以随时用 break 来跳出循环!

7. 【学会提高代码的效率】你的觉得以下代码效率方面怎样?有没有办法可以大幅度改进(仍然使用while) ?

1. i = 0

2. string = 'ILoveFishC.com'

3. while i < len(string)):

4. print(i)

5. i += 1

复制代码

这段代码之所以“效率比较低”是因为每次循环都需要调用一次 len() 函数(我们还没有学到函数的概念,小甲鱼这里为零基础的朋友形象的解释下:就像你打游戏打得正

Python 习题

29 / 237

HIGH 的时候,老妈让你去买盐...... 你有两种选择,一次买一包,一天去买五次,或者一次性买五包回来,老妈要就直接给她。)

1. i = 0

2. string = 'ILoveFishC.com'

3. length = len(string)

4. while i < length:

5. print(i)

6. i += 1

复制代码

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

动动手答案:

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

1. count = 3

2. password = 'FishC.com'

3.

4. while count:

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

6. if passwd == password:

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

8. break

9. elif '*' in passwd:

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

11. continue

12. else:

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

14. count -= 1

复制代码

Python 习题

30 / 237

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

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

1. for i in range(100, 1000):

2. sum = 0

3. temp = i

4. while temp:

5. sum = sum + (temp%10) ** 3

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

7. if sum == i:

8. print(i)

复制代码

2. 三色球问题

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

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

2. for red in range(0, 4):

3. for yellow in range(0, 4):

4. for green in range(2, 7):

5. if red + yellow + green == 8:

6. # 注意,下边不是字符串拼接,因此不用‚+‛哦~

7. print(red, '\t', yellow, '\t', green)

复制代码

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

第十课

测试题:

0. 列表都可以存放一些什么东西?

Python 习题

31 / 237

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 列表中的每个内容,如图:

Python 习题 32 / 237

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

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

回复您的答案即可查看参考答案!

测试题答案:

0. 列表都可以存放一些什么东西?

我们说 Python 的列表是一个打了激素的数组,如果把数组比喻成集装箱,那么 Python 的列表就是一个大仓库,Ta 可以存放我们已经学习过的任何数据类型。

>>> mix = [1, „小甲鱼‟, 3.14, [1, 2, 3]]

1. 向列表增加元素有哪些方法?

这节课我们教过大家三种方法想列表增加元素,分别是:append()、extend() 和 insert()。

2. append() 方法和 extend() 方法都是向列表的末尾增加元素,请问他们有什么区别?

Python 习题

33 / 237

append() 方法是将参数作为一个元素增加到列表的末尾。

extend() 方法则是将参数作为一个列表去扩展列表的末尾。

请看以下示例:

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

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

3. >>> name

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

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

6. >>> name

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

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

9. >>> name

10. ['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. 自己动手试试看,并分析在这种情况下,向列表添加数据应当采用哪种方法比较好?

假设给定以下列表:

Python 习题

34 / 237

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

要求将列表修改为:

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

方法一:使用 insert() 和 append() 方法修改列表。

方法二:重新创建一个同名字的列表覆盖。

解答:

方法一:

1. member.insert(1, 88)

2. member.insert(3, 90)

3. member.insert(5, 85)

4. member.insert(7, 90)

5. member.append(88)

复制代码

方法二:

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

复制代码

对于这种情况,明显是第二种方法看起来要好一些嘛。

不过对于大型的列表,第一种方法可能更合适,所以我们说永远没有最好的,只有最合适的。

1. 利用 for 循环打印上边 member 列表中的每个内容

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

2. for each in member:

3. print(each)

复制代码

Python 习题

35 / 237

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

1. 方法一:

2. count = 0

3. length = len(member)

4. while count < length:

5. print(member[count], member[count+1])

6. count += 2

7.

8. 方法二:

9.

10. for each in range(len(member)):

11. if each%2 == 0:

12. print(member[each], member[each+1])

复制代码

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

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

2. >>> new = old

3. >>> old = [6]

4. >>> print(new)

复制代码

如果不上机操作,你觉得会打印什么内容?

第十二课

1. 请问如何将下边这个列表的' 小甲鱼' 修改为' 小鱿鱼' ?

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

复制代码

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

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

Python 习题

36 / 237

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

5. 你有听说过列表推导式或列表解析吗?

没听过?!没关系,我们现场来学习一下吧,看表达式:

1. >>> [ i*i for i in range(10) ]

复制代码 你觉得会打印什么内容?

1. >>> [i*i for i in range(10)]

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

复制代码

居然分别打印了0到9各个数的平方,然后还放在列表里边了有木有?!

列表推导式(List comprehensions)也叫列表解析,灵感取自函数式编程语言 Haskell 。Ta 是一个非常有用和灵活的工具,可以用来动态的创建列表,语法如:

[有关A 的表达式 for A in B]

例如

1. >>> list1 = [x**2 for x in range(10)]

2. >>> list1

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

复制代码 相当于

1. list1 = []

2. for x in range(10):

3. list1.append(x**2)

复制代码

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

1. >>> list1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0] 复制代码

Python 习题

37 / 237

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

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

回复您的答案即可查看参考答案!

测试题答案:

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

Python 习题

38 / 237

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

2. >>> new = old

3. >>> old = [6]

4. >>> print(new)

复制代码

会打印:[1, 2, 3, 4, 5]

如有不理解的朋友请看上一讲课后作业的详细答案。

1. 请问如何将下边这个列表的' 小甲鱼' 修改为' 小鱿鱼' ?

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

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

复制代码

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

1. >>> 列表名.sort()

复制代码

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

1. >>> 列表名.sort()

2. >>> 列表名.reverse()

复制代码

或者

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

复制代码

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

copy() 方法跟使用切片拷贝是一样的:

1. >>> list2 = list1.copy()

2. >>> list2

Python 习题

39 / 237

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

复制代码

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

1. >>> list2.clear()

2. >>> list2

3. []

复制代码

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

1. >>> list1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0] 复制代码

1. list1 = []

2. for x in ragne(10):

3. for y in range(10):

4. if x%2 == 0:

5. if y%2 != 0:

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

复制代码

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

1. >>> list3 = [name + ' :' + slogan[2:] for slogan in list1 for name in list2 if slogan[0]

== name[0]]

复制代码

第十三课

测试题:

0. 请用一句话描述什么是列表?再用一句话描述什么是元组?

1. 什么情况下你需要使用元组而不是列表?

Python 习题

40 / 237

2. 当元组和列表掉下水,你会救谁?

3. 请将下图左边列表的内置方法与右边的注释连线,并圈出元组可以使用的方法。

4. 创建一个元组,什么情况下逗号和小括号必须同时存在,缺一不可?

5. x, y, z = 1, 2, 3 请问x, y, z是元组吗?

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

Python 习题 41 / 237

1) 游戏中角色的属性:

2) 你的身份证信息:

3) 论坛的会员:

4) 团队合作开发程序,传递给一个你并不了解具体实现的函数的参数:

5) 航天火箭各个组件的具体配置参数:

6) NASA系统中记录已经发现的行星数据:

7. 上节课我们通过课后作业的形式学习到了“列表推导式”,那请问如果我把中括号改为小括号,会不会得到“元组推导式”呢?

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

回复您的答案即可查看参考答案!

测试题答案:

0. 请用一句话描述什么是列表?再用一句话描述什么是元组?

列表:一个大仓库,你可以随时往里边添加和删除任何东西。

元组:封闭的列表,一旦定义,就不可改变(不能添加、删除或修改)。

1. 什么情况下你需要使用元组而不是列表?

当我们希望内容不被轻易改写的时候,我们使用元组(把权力关进牢笼)。

当我们需要频繁修改数据,我们使用列表。

2. 当元组和列表掉下水,你会救谁?

如果是我,我会救列表,因为列表提供了比元组更丰富的内置方法,这相当大的提高了编程的灵活性。

Python 习题 42 / 237

回头来看下元组,元组固然安全,但元组一定创建就无法修改(除非通过新建一个元组来间接修改,但这就带来了消耗),而我们人是经常摇摆不定的,所以元组只有在特殊的情况才用到,平时还是列表用的多。

综上所述,小甲鱼会救列表(列表是美眉)。

3. 请将左边列表的内置方法与右边的注释连线,并圈出元组可以使用的方法。

看吧,元组果然比较悲剧吧,仅有两个方法元组可以使用,其他方法都不行,不信你试试?

Python 习题

43 / 237

4. 创建一个元组,什么情况下逗号和小括号必须同时存在,缺一不可?

在拼接只有一个元素的元组的时候,例如我们课上举的例题:

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

2. # 如果我想在‚黑夜‛和‚迷途‛之间插入‚怡静‛,我们应该:

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

复制代码

5. x, y, z = 1, 2, 3 请问x, y, z是元组吗?

所有的多对象的、逗号分隔的、没有明确用符号定义的这些集合默认的类型都是元组,自己在IDLE 中键入以下代码,并体会一下:

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

2.

3. >>> type(x)

4.

5. >>> h = x, y, z

6.

7. >>> type(h)

复制代码

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

1) 游戏中角色的属性:列表

2) 你的身份证信息:元组

3) 论坛的会员:列表

4) 团队合作开发程序,传递给一个你并不了解具体实现的函数的参数:元组

5) 航天火箭各个组件的具体配置参数:元组

6) NASA系统中记录已经发现的行星数据:列表

Python 习题

44 / 237

7. 上节课我们通过课后作业的形式学习到了“列表推导式”,那请问如果我把中括号改为小括号,会不会得到“元组推导式”呢?自己动手试试看再看答案哦^_^

Python3 木有“元组推导式”,为嘛?没必要丫,有了“列表推导式”已经足够了。

那为什么“>>> tuple1 = (x**2 for x in range(10))”不会报错?

因为你误打误撞得到了一个生成器:

1. >>> type(tuple1)

2. <class 'generator'>

复制代码

关于生成器的概念小甲鱼今后会细讲,你可以尝试这么去访问我们刚刚的生成器:

# 注意,Python3 开始 next() 方法改为 __next__() 哦~

1. >>> tuple1.__next__()

2. 0

3. >>> tuple1.__next__()

4. 1

5. >>> tuple1.__next__()

6. 4

7. >>> tuple1.__next__()

8. 9

9. >>> tuple1.__next__()

10. 16

11. >>> tuple1.__next__()

12. 25

13. >>> tuple1.__next__()

14. 36

复制代码

第十四课

Python 习题

45 / 237

测试题:

0. 还记得如何定义一个跨越多行的字符串吗(请至少写出两种实现的方法)?

1. 三引号字符串通常我们用于做什么使用?

2. file1 = open('C:\windows\temp\readme.txt', 'r') 表示以只读方式打开

“C:\windows\temp\readme.txt”这个文本文件,但事实上这个语句会报错,知道为什么吗?你会如何修改?

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

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

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

1. >>> str1[20:-36]

复制代码

6. 据说只有智商高于150的鱼油才能解开这个字符串(还原为有意义的字符串):str1 = 'i2sl54ovvvb4e3bferi32s56h;$c43.sfc67o0cm99'

动动手:

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

# 密码安全性检查代码

#

# 低级密码要求:

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

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

#

# 中级密码要求:

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

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

#

# 高级密码要求:

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

Python 习题 46 / 237 三种组合

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

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

程序演示:

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

回复您的答案即可查看参考答案!

Python 习题

47 / 237

测试题答案:

0. 还记得如何定义一个跨越多行的字符串吗(请至少写出两种实现的方法)?

方法一:

>>> str1 = '''待我长发及腰,将军归来可好?

此身君子意逍遥,怎料山河萧萧。

天光乍破遇,暮雪白头老。

寒剑默听奔雷,长枪独守空壕。

醉卧沙场君莫笑,一夜吹彻画角。

江南晚来客,红绳结发梢。'''

方法二:

>>> str2 = '待卿长发及腰,我必凯旋回朝。\

昔日纵马任逍遥,俱是少年英豪。\

东都霞色好,西湖烟波渺。\

执枪血战八方,誓守山河多娇。\

应有得胜归来日,与卿共度良宵。\

盼携手终老,愿与子同袍。'

方法三:

>>> str3 = ('待卿长发及腰,我必凯旋回朝。'

' 昔日纵马任逍遥,俱是少年英豪。'

' 东都霞色好,西湖烟波渺。'

' 执枪血战八方,誓守山河多娇。'

' 应有得胜归来日,与卿共度良宵。'

' 盼携手终老,愿与子同袍。')

1. 三引号字符串通常我们用于做什么使用?

三引号字符串不赋值的情况下,通常当作跨行注释使用,例如:

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

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

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

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

5.

Python 习题

48 / 237

6. print("I love FishC.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 )即可:

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

复制代码

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

1. >>> str1[16:29]

复制代码

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

1. >>> str1[-45:-32] 复制代码

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

1. >>> str1[20:-36]

复制代码

'fishc' ,加入了负数索引,问题变得有些复杂,不过自己多尝试几次就可以熟练掌握了。

6. 据说只有智商高于150的鱼油才能解开这个字符串(还原为有意义的字符串):str1 = 'i2sl54ovvvb4e3bferi32s56h;$c43.sfc67o0cm99'

1. >>> str1[::3]

复制代码