9512.net
甜梦文库
当前位置:首页 >> 数学 >>

课后题



第一节课 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 中的乘号是*(星号)。

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 的功能描述。哦,答案应该是 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 里,这种做法叫做拼接字符串。 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!”
1. i = 10 2. while i: 3. 4. 复制代码 print('我爱鱼 C!') 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() 按照“四 舍五入”的方式取整吗? 4. 取得一个变量的类型, 视频中介绍可以使用 type() 和 isinstance(),你更 倾向于使用哪个? 5. Python3 可以给变量命名中文名,知道为什么吗? 6. 【该题针对零基础的鱼油】你觉得这个系列教学有难度吗?

动动手: 0. 针对视频中小甲鱼提到的小漏洞,再次改进我们的小游戏:当用户输入错误 类型的时候,及时提醒用户重新输入,防止程序崩溃。 如果你尝试过以下做法,请举下小手:

1. temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:") 2. # 这种想法是因为 type(1)会返回<class 'int'>,如果 type(temp)返回结果一致说明 输入是整数。 3. while type(temp) != type(1): 4. 5. 复制代码 print("抱歉,输入不合法,", end='') temp = input("请输入一个整数:")

或者可能这样:
1. temp = input("不妨猜一下小甲鱼现在心里想的是哪个数字:") 2. # not 操作符的作用是将布尔类型的结果翻转:即取反的意思,not True == Flase 3. while not isinstance(temp, int): 4. 5. 复制代码 print("抱歉,输入不合法,", end='') temp = input("请输入一个整数:")

以上方法的思路是正确的,不过似乎忽略了一点儿:就是 input()的返回值始终 是字符串,所以 type(temp)永远是<class 'str'>! 其实有蛮多的做法可以实现的,不过就目前我们学习过的内容来看,还不足够。 所以,在让大家动手完成这道题之前,小甲鱼介绍一点新东西给大家! s 为字符串 s.isalnum() s.isalpha() s.isdigit() s.islower() s.isupper() s.istitle() s.isspace() 例如: >>> s = 'I LOVE FISHC' 所有字符都是数字或者字母,为真返回 Ture,否则返回 False。 所有字符都是字母,为真返回 Ture,否则返回 False。 所有字符都是数字,为真返回 Ture,否则返回 False。 所有字符都是小写,为真返回 Ture,否则返回 False。 所有字符都是大写,为真返回 Ture,否则返回 False。 所有单词都是首字母大写, 为真返回 Ture, 否则返回 False。 所有字符都是空白字符,为真返回 Ture,否则返回 False。

>>> 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) == 5 5.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. 针对视频中小甲鱼提到的小漏洞,再次改进我们的小游戏:当用户输入错误 类型的时候,及时提醒用户重新输入,防止程序崩溃。 需要注意的地方在代码中已经注释!
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. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. temp = input() while not temp.isdigit(): temp = input("抱歉,您的输入有误,请输入一个整数:") guess = int(temp) times = times - 1 # 用户每输入一次,可用机会就-1 if guess == secret: print("我草,你是小甲鱼心里的蛔虫吗?!") print("哼,猜中了也没有奖励!") else: if guess > secret: print("哥,大了大了~~~") else: print("嘿,小了,小了~~~") if times > 0: print("再试一次吧:", end=" ") else: print("机会用光咯 T_T")

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

1. 写一个程序,判断给定年份是否为闰年。
1. temp = input('请输入一个年份:') 2. while not temp.isdigit(): 3. 4. 5. year = int(temp) 6. if year/400 == int(year/400): 7. print(temp + ' 是闰年!') temp = input("抱歉,您的输入有误,请输入一个整数:")

8. else: 9. 10. 11. 12. 复制代码 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 看来,只 有以下内容会被看作假 (注意冒号括号里边啥都没有, 连空格都不要有! ) : False None 0 "" '' () [] {} 其他一切都被解释为真! 不妨试试:
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!')

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):

VS

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 的值(例子参考楼上那题)。

动动手答案:
本帖隐藏的内容

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. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. temp = input() guess = int(temp) times = times - 1 # 用户每输入一次,可用机会就-1 if guess == secret: print("我草,你是小甲鱼心里的蛔虫吗?!") print("哼,猜中了也没有奖励!") else: if guess > secret: print("哥,大了大了~~~") else: print("嘿,小了,小了~~~") if times > 0: print("再试一次吧:", end=" ") else: print("机会用光咯 T_T")

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

1. 尝试写代码实现以下截图功能:
1. temp = input('请输入一个整数:') 2. number = int(temp) 3. i = 1 4. while number: 5. 6. 7. 复制代码 print(i) i = i + 1 number = number - 1

2. 尝试写代码实现以下截图功能:
1. temp = input('请输入一个整数:') 2. number = int(temp) 3. while number: 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 复制代码 i = number - 1 while i: print(' ', end = '') i = i - 1 j = number while j: print('*', end = '') j = j - 1 print() number = number - 1

第六课 测试题: 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. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方 式!

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

测试题答案:
本帖隐藏的内容

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? 大家还记得第四讲作业提到的“短路逻辑”吗?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. 4. 5. 6. 7. 复制代码 if i % 2 != 0: print(i, end=' ') i += 1 else: i += 1

1. 我们说过现在的 Python 可以计算很大很大的数据, 但是......真正的大数据 计算可是要靠刚刚的硬件滴,不妨写一个小代码,让你的计算机为之崩溃? print(2 ** 2 ** 32) # 一般很多机子都会在一会儿之后:Memory Overflow,内存不够用。 # 设计到幂操作,结果都是惊人滴。

2. 题目:请编程求解该阶梯至少有多少阶?
1. x = 7 2. i = 1 3. flag = 0 4.

5. while i <= 100: 6. 7. 8. 9. 10. 11. 12. if flag == 1: 13. print('阶梯数是:', x) 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

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 的形式打印。

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

2. if x < y: 3. 4. 5. small = x if z < small: 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 的异常。 什么情况下我们会需要这样的代码呢?当我们在测试程序的时候就很好用, 因为 与其让错误的条件导致程序今后莫名其妙地崩溃, 不如在错误条件出现的那一瞬 间我们实现“自爆”。 一般来说我们可以用 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('请输入一个分数:')) 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) 生成哪些数? 5. 目测以下程序会打印什么?
1. while True: 2. 3. 4. 5. 6. while True: break print(1) print(2) break

7. print(3) 复制代码

6. 什么情况下我们要使循环永远为真? 7. 【学会提高代码的效率】你的觉得以下代码效率方面怎样?有没有办法可以 大幅度改进(仍然使用 while)?
1. i = 0 2. string = 'ILoveFishC.com' 3. while i < len(string)): 4. 5. 复制代码 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. 下面的循环会打印多少次"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. 3. 4. 5. 6.

while True: break print(1) print(2) 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. 5. 复制代码 print(i) i += 1

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

戏打得正 HIGH 的时候,老妈让你去买盐......你有两种选择,一次买一包,一天 去买五次,或者一次性买五包回来,老妈要就直接给她。)
1. i = 0 2. string = 'ILoveFishC.com' 3. length = len(string) 4. while i < length: 5. 6. 复制代码 print(i) i += 1

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

动动手答案:
本帖隐藏的内容

0. 设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果用户输 入的内容中包含"*"则不计算在内。
1. count = 3 2. password = 'FishC.com' 3. 4. while count: 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 复制代码 passwd = input('请输入密码:') if passwd == password: print('密码正确,进入程序......') break elif '*' in passwd: print('密码中不能含有"*"号!您还有', count, '次机会!', end=' ') continue else: print('密码输入错误!您还有', count-1, '次机会!', end=' ') count -= 1

1. 编写一个程序,求 100~999 之间的所有水仙花数。 如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数
1. for i in range(100, 1000): 2. 3. 4. 5. 6. 7. 8. 复制代码 sum = 0 temp = i while temp: sum = sum + (temp%10) ** 3 temp //= 10 if sum == i: print(i) # 注意这里要使用地板除哦~

2. 三色球问题 有红、黄、蓝三种颜色的求,其中红球 3 个,黄球 3 个,绿球 6 个。先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,编程计算摸出球的各种 颜色搭配。
1. print('red\tyellow\tblue') 2. for red in range(0, 4): 3. 4. 5. 6. 7. 复制代码 for yellow in range(0, 4): for green in range(2, 7): if red + 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() 方法则是将参数作为一个列表去扩展列表的末尾。

请看以下示例:
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. 自己动手试试看,并分析在这种情况下,向列表添加数据应当采用哪种方法 比较好? 假设给定以下列表: 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)

2. 上一题打印的样式不是很好, 能不能修改一下代码打印成下图的样式呢? 【请 至少使用两种方法实现】
1. 方法一: 2. count = 0 3. length = len(member)

4. while count < length: 5. 6. 7. 8. 方法二: 9. 10. for each in range(len(member)): 11. 12. 复制代码 if each%2 == 0: print(member[each], member[each+1]) print(member[count], member[count+1]) count += 2

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. 要对一个列表进行逆序排序,请问使用什么方法?

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] 复制代码

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

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

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

测试题答案:
本帖隐藏的内容

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

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 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. 4. 5. 6. 复制代码 for y in range(10): if x%2 == 0: if y%2 != 0: 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. 什么情况下你需要使用元组而不是列表? 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. 创建一个元组,什么情况下逗号和小括号必须同时存在,缺一不可? 在拼接只有一个元素的元组的时候,例如我们课上举的例题:
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 系统中记录已经发现的行星数据:列表

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 复制代码

第 14 课 测试题: 0. 还记得如何定义一个跨越多行的字符串吗(请至少写出两种实现的方法)? 1. 三引号字符串通常我们用于做什么使用? 2. file1 = open('C:\windows\temp\readme.txt', 'r') 表示以只读方式打开 “C:\windows\temp\readme.txt”这个文本文件,但事实上这个语句会报错,知 道为什么吗?你会如何修改? 3. 有字符串: str1 = '<a href="http://www.fishc.com/dvd" target="_blank"> 鱼 C 资源打包</a>',请问如何提取出子字符串:'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. 密码必须由数字、字母及特殊字符(仅限: ~!@#$%^&*()_=-/,.?<>;:[]{}|\)三种组合 # 2. 密码只能由字母开头 # 3. 密码长度不能低于 16 位 程序演示:

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

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

测试题答案:
本帖隐藏的内容

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

>>> str1 = '''待我长发及腰,将军归来可好? 此身君子意逍遥,怎料山河萧萧。 天光乍破遇,暮雪白头老。 寒剑默听奔雷,长枪独守空壕。 醉卧沙场君莫笑,一夜吹彻画角。 江南晚来客,红绳结发梢。''' 方法二: >>> str2 = '待卿长发及腰,我必凯旋回朝。\ 昔日纵马任逍遥,俱是少年英豪。\ 东都霞色好,西湖烟波渺。\ 执枪血战八方,誓守山河多娇。\ 应有得胜归来日,与卿共度良宵。\ 盼携手终老,愿与子同袍。' 方法三: >>> str3 = ('待卿长发及腰,我必凯旋回朝。' '昔日纵马任逍遥,俱是少年英豪。' '东都霞色好,西湖烟波渺。' '执枪血战八方,誓守山河多娇。' '应有得胜归来日,与卿共度良宵。' '盼携手终老,愿与子同袍。')

1. 三引号字符串通常我们用于做什么使用? 三引号字符串不赋值的情况下,通常当作跨行注释使用,例如:
1. '''这是一个三引号字符串用于注释的例子, 2. 例子虽然只是简简单单的一句话, 3. 却毫无遮掩地体现了作者用情至深, 4. 所谓爱至深处情至简!''' 5. 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 = '<a href="http://www.fishc.com/dvd" target="_blank">鱼 C 资源打包</a>',请问如何提取出子字符串: '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] 复制代码

动动手答案:
本帖隐藏的内容

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

1. # 密码安全性检查代码 2. # 3. # 低级密码要求: 4. # 5. # 6. # 7. # 中级密码要求: 8. # 1. 密码必须由数字、字母或特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\) 1. 密码由单纯的数字或字母组成 2. 密码长度小于等于 8 位

任意两种组合 9. # 10. # 11. # 高级密码要求: 12. # 1. 密码必须由数字、字母及特殊字符(仅限:~!@#$%^&*()_=-/,.?<>;:[]{}|\) 2. 密码长度不能低于 8 位

三种组合 13. # 14. # 15. 16. symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>''' 17. chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' 18. nums = '0123456789' 19. 20. passwd = input('请输入需要检查的密码组合:') 21. 22. # 判断长度 23. length = len(passwd) 24. 25. while (passwd.isspace() or length == 0) : 26. 27. 28. if length <= 8: 29. flag_len = 1 passwd = input("您输入的密码为空(或空格),请重新输入:") 2. 密码只能由字母开头 3. 密码长度不能低于 16 位

30. elif 8 < length < 16:

31.

flag_len = 2

32. else: 33. 34. 35. flag_con = 0 36. 37. # 判断是否包含特殊字符 38. for each in passwd: 39. 40. 41. 42. 43. # 判断是否包含字母 44. for each in passwd: 45. 46. 47. 48. 49. # 判断是否包含数字 50. for each in passwd: 51. 52. 53. 54. 55. # 打印结果 56. while 1 : 57. 58. 59. 60. 61. 62. print("您的密码安全级别评定为:", end='') if flag_len == 1 or flag_con == 1 : print("低") elif flag_len == 2 or flag_con == 2 : print("中") else : if each in nums: flag_con += 1 break if each in chars: flag_con += 1 break if each in symbols: flag_con += 1 break flag_len = 3

63. 64. 65. 66. 67. 68. 69. 70. 71. 复制代码

print("高") print("请继续保持") break

print("请按以下方式提升您的密码安全级别:\n\ \t1. 密码必须由数字、字母及特殊字符三种组合\n\ \t2. 密码只能由字母开头\n\ \t3. 密码长度不能低于 16 位'") break

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

格式化字符及其 ASCII 码 格式化字符串 格式化整数 格式化无符号八进制数 格式化无符号十六进制数 格式化无符号十六进制数(大写) 格式化定点数,可指定小数点后的精度 用科学计数法格式化定点数 根据值的大小决定使用%f 或者%e 根据值的大小决定使用%F 或者%E

1. 请问以下这行代码会打印什么内容?
1. >>> "{{1}}".format("不打印", "打印") 复制代码

2. 以下代码中,a, b, c 是什么参数?
1. >>> "{a} love {b}.{c}".format(a="I", b="FishC", c="com")

2. 'I love FishC.com' 复制代码

3. 以下代码中,{0}, {1}, {2}是什么参数?
1. >>> "{0} love {1}.{2}".format("I", "FishC", "com") 2. 'I love FishC.com' 复制代码

4. 如果想要显示 Pi = 3.14,format 前边的字符串应该怎么填写呢?
1. ''.format('Pi = ', 3.1415) 复制代码

动动手: 0. 编写一个进制转换程序, 程序演示如下 (提示, 十进制转换二进制可以用 bin() 这个 BIF):

1. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方 式! 第十五课 测试题答案:
本帖隐藏的内容

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

格式化字符及其 ASCII 码 格式化字符串

%d %o %x %X %f %e %E %g %G

格式化整数 格式化无符号八进制数 格式化无符号十六进制数 格式化无符号十六进制数(大写) 格式化定点数,可指定小数点后的精度 用科学计数法格式化定点数 作用同%e,用科学计数法格式化定点数 根据值的大小决定使用%f 或者%e 作用同%g,根据值的大小决定使用%F 或者%E

1. 请问以下这行代码会打印什么内容?
1. >>> "{{1}}".format("不打印", "打印") 2. '{1}' 复制代码

2. 以下代码中,a, b, c 是什么参数?
1. >>> "{a} love {b}.{c}".format(a="I", b="FishC", c="com") 2. 'I love FishC.com' 复制代码

关键字参数

3. 以下代码中,{0}, {1}, {2}是什么参数?
1. >>> "{0} love {1}.{2}".format("I", "FishC", "com") 2. 'I love FishC.com' 复制代码

位置参数

4. 如果想要显示 Pi = 3.14,format 前边的字符串应该怎么填写呢?
1. >>> '{0}{1:.2f}'.format('Pi = ', 3.1415) 2. 'Pi = 3.14' 复制代码

动动手答案:
本帖隐藏的内容

0. 编写一个进制转换程序
1. q = True 2. while q: 3. 4. 5. 6. 7. 8. 9. 10. 复制代码 num = input('请输入一个整数(输入 Q 结束程序):') if num != '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('I love FishC.com') 会返回什么值?为什么? 4. 哎呀呀,现在的小屁孩太调皮了,邻居家的孩子淘气,把小甲鱼刚写好的代码画了个图 案,麻烦各位鱼油恢复下啊,另外这家伙画的是神马吗?怎么那么眼熟啊!??

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

1. 视频中我们说 sum() 这个 BIF 有个缺陷,就是如果参数里有字符串类型的话就会报错, 请写出一个新的实现过程,自动“无视”参数里的字符串并返回正确的计算结果

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

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

测试题答案:
本帖隐藏的内容

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

1. 请问分别使用什么 BIF,可以把一个可迭代对象转换为列表、元祖和字符串? list([iterable]) 把可迭代对象转换为列表 tuple([iterable]) 把可迭代对象转换为元祖 str(obj) 把对象转换为字符串 例如:
1. >>> temp = 'I love FishC.com!' 2. >>> list(temp) 3. ['I', ' ', 'l', 'o', 'v', 'e', ' ', 'F', 'i', 's', 'h', 'C', '.', 'c', 'o', 'm', '!'] 复制代码

2. 你还能复述出“迭代”的概念吗? 所谓迭代,是重复反馈过程的活动,其目的通常是为了接近并到达所需的目标或结果。每一 次对过程的重复被称为一次“迭代”, 而每一次迭代得到的结果会被用来作为下一次迭代的初 始值。

3. 你认为调用 max('I love FishC.com') 会返回什么值?为什么?

会返回:'v',因为字符串在计算机中是以 ASCII 码的形式存储(ASCII 对照表: http://bbs.fishc.com/thread-41199-1-1.html),参数中 ASCII 码值最大的是'v'对应的 118。

4. 哎呀呀,现在的小屁孩太调皮了,邻居家的孩子淘气,把小甲鱼刚写好的代码画了个图 案,麻烦各位鱼油恢复下啊,另外这家伙画的是神马吗?怎么那么眼熟啊!??
1. name = input('请输入待查找的用户名:') 2. score = [['迷途', 85], ['黑夜', 80], ['小布丁', 65], ['福禄娃娃', 95], [' 怡静', 90]] 3. IsFind = False 4. 5. for each in score: 6. 7. 8. 9. 10. 11. if IsFind == False: 12. 复制代码 print('查找的数据不存在!') if name in each: print(name + '的得分是:', each[1]) IsFind = True break

动动手答案:
本帖隐藏的内容

0. 猜想一下 min() 这个 BIF 的实现过程
1. def min(x): 2. 3. 4. 5. 6. 7. 8. return least for each in x: if each < least: least = each least = x[0]

9. 10. print(min('123456789')) 复制代码

注: 关于函数的定义和使用在下一讲的课程中讲解, 目前只需要理解该 BIF 实现的原理即可。

1. 视频中我们说 sum() 这个 BIF 有个缺陷,就是如果参数里有字符串类型的话就会报 错,请写出一个新的实现过程,自动“无视”参数里的字符串并返回正确的计算结果
1. def sum(x): 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. print(sum([1, 2.1, 2.3, 'a', '1', True])) 复制代码 return result for each in x: if (type(each) == int) or (type(each) == float): result += each else: continue result = 0

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

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

5. 请问调用以下这个函数会打印什么内容?
1. >>> def hello(): 2. 3. 4. 复制代码 print('Hello World!') return print('Welcome To FishC.com!')

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

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

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

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

回复您的答案即可查看参考答案!
测试题答案:
本帖隐藏的内容

0. 你有听说过 DRY 吗? DRY 是程序员们公认的指导原则:Don't Repeat Yourself. 快快武装你的思维吧,拿起函数,不要再去重复拷贝一段代码了!

1. 都是重复一段代码,为什么我要使用函数(而不使用简单的拷贝黏贴)呢? 使用函数:

0) 可以降低代码量(调用函数只需要一行,而拷贝黏贴需要 N 倍代码) 1) 可以降低维护成本(函数只需修改 def 部分内容,而拷贝黏贴则需要每一处出现的地方 都作修改) 2) 使序更容易阅读(没有人会希望看到一个程序重复一万行“I love FishC.com”) 2. 函数可以有多个参数吗? 可以的,理论上你想要有多少个就可以有多少个,只不过如果函数的参数过多,在调用的时 候出错的机率就会大大提高,因而写这个函数的程序员也会被相应的问候祖宗,所以,尽量 精简吧,在 Python 的世界里,精简才是王道!

3. 创建函数使用什么关键字,要注意什么? 使用“def”关键字,要注意函数名后边要加上小括号“()”,然后小括号后边是冒号“:”,然后缩 进部分均属于函数体的内容,例如:
1. def MyFun(): 2. 3. 4. 5. 6. # 噢,我不属于 MyFun()函数的了 复制代码 # 我是函数体 # 我也是函数体 # 我们都属于函数 MyFun()

4. 请问这个函数有多少个参数?
1. def MyFun((x, y), (a, b)): 2. 复制代码 return x * y - a * b

如果你回答两个,那么恭喜你错啦,答案是 0,因为类似于这样的写法是错误的! 我们分析下,函数的参数需要的是变量,而这里你试图用“元祖”的形式来传递是不可行的。 我想你如果这么写,你应该是要表达这么个意思:
1. >>> def MyFun(x, y): 2. 3. 4. >>> MyFun((3, 4), (1, 2)) 5. 10 return x[0] * x[1] - y[0] * y[1]

复制代码

5. 请问调用以下这个函数会打印什么内容?
1. >>> def hello(): 2. 3. 4. 复制代码 print('Hello World!') return print('Welcome To FishC.com!')

会打印:
1. >>> hello() 2. Hello World! 复制代码

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

动动手答案:
本帖隐藏的内容

0. 编写一个函数 power()模拟内建函数 pow(),即 power(x, y)为计算并返回 x 的 y 次 幂的值。
1. def power(x, y): 2. 3. 4. 5. 6. 7. 8. 9. print(power(2, 3)) 复制代码 return result for i in range(y): result *= x result = 1

1. 编写一个函数,利用欧几里得算法(脑补链接)求最大公约数,例如 gcd(x, y)返回值 为参数 x 和参数 y 的最大公约数。
1. def gcd(x, y): 2. 3. 4. 5. 6. 7. 8. 9. print(gcd(4, 6)) 复制代码 return x while y: t = x % y x = y y = t

2. 编写一个将十进制转换为二进制的函数,要求采用“除 2 取余”(脑补链接)的方式,结 果与调用 bin()一样返回字符串形式。
1. def Dec2Bin(dec): 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. print(Dec2Bin(62)) return result while temp: result += str(temp.pop()) while dec: quo = dec % 2 dec = dec // 2 temp.append(quo) temp = [] result = ''



更多相关文章:
计算机网络第五版谢希仁编著课后习题答案
计算机网络第五版谢希仁编著课后习题答案_工学_高等教育_教育专区。第一章 概述 1-01 计算机网络向用户可以提供那些服务? 答: 连通性和共享 1-02 简述分组交换...
机械工程控制基础(第六版)课后题目答案
机械工程控制基础(第六版)课后题目答案_计算机软件及应用_IT/计算机_专业资料。最新答案 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21...
C程序设计(第四版)谭浩强 课后习题答案 共11章
C程序设计(第四版)谭浩强 课后习题答案 共11章_IT/计算机_专业资料。C程序设计(第四版)谭浩强 课后习题答案 共11章 第1 章程序设计和 C 语言 1 1.1 什么...
《结构力学》课后习题答案 重庆大学出版社
《结构力学》课后习题答案 重庆大学出版社_工学_高等教育_教育专区。《结构力学》课后习题答案 重庆大学出版社 主编是文国治 第1 章 绪论(无习题) 第 2 章 ...
大学英语精读第二册课后习题答案
大学英语精读第三版第二册 Book2Unit10 答案 上海外语教育出版社 董亚芬主编 课后翻译答案 Book2 Unit1 翻译 1.她砰地关上门,一声不吭地走了,他们之间那场...
通信原理教程+樊昌信+课后习题答案第一章至第八章
通信原理教程+樊昌信+课后习题答案第一章至第八章_哲学_高等教育_教育专区。第一章习题习题 1.1 在英文字母中 E 出现的概率最大,等于 0.105,试求其信息量。...
人教版小学五年级语文下册《白杨》课后题答案
人教版小学五年级语文下册《白杨》课后题答案_五年级语文_语文_小学教育_教育专区。《白杨》 2、默读课文,讨论: (1) 从爸爸介绍白杨的话里可以看出白杨有哪些特点...
11.《中国石拱桥》研讨与练习【课后练习题】
11.《中国石拱桥》研讨与练习【课后练习题】_初二语文_语文_初中教育_教育专区。人教版初二语文课后练习题答案 11.《中国石拱桥》研讨与练习【课后练习题】 11....
北师版数学 选修4-5 课后答案
北师版数学 选修4-5 课后答案_初二数学_数学_初中教育_教育专区 暂无评价|0人阅读|0次下载|举报文档北师版数学 选修4-5 课后答案_初二数学_数学_初中教育_教育...
自动控制原理_胡寿松第5版_课后习题及答案_完整_
自动控制原理_胡寿松第5版_课后习题及答案_完整__理学_高等教育_教育专区。胡寿松自动控制原理习题解答第二章 2—1 设水位自动控制系统的原理方案如图 1—18 所示...
更多相关标签:
    菱镜头    涂尔干    春课后题答案    工程力学课后习题答案    材料力学课后习题答案    流体力学课后习题答案    课后习题答案网    

All rights reserved Powered by 甜梦文库 9512.net

copyright ©right 2010-2021。
甜梦文库内容来自网络,如有侵犯请联系客服。zhit325@126.com|网站地图