第1课
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 https://www.wendangku.net/doc/876914890.html, ' * 5) 可以正常执行,
但>>>print('I love https://www.wendangku.net/doc/876914890.html, ' + 5) 却报错?
在Python 中不能把两个完全不同的东西加在一起,比如说数字和文本,
正是这个原因,>>>print('I love https://www.wendangku.net/doc/876914890.html, ' + 5) 才会报错。这就像是在说“五只小甲鱼加上苍井空会是多少?”一样没有多大意义,结果可能是五,可能是六,也可能是八!不过乘以一个整数来翻倍就具有一定的意义了,前边的例子就是将"I love https://www.wendangku.net/doc/876914890.html," 这个字符串打印五次。
5. 如果我需要在一个字符串中嵌入一个双引号,正确的做法是?
你有两个选择:可以利用反斜杠()对双引号转义:\",或者用单引号引起这个字符串。例如:' I l"o"ve https://www.wendangku.net/doc/876914890.html, '。
6. 为什么我们要使用Python3?Python2到底有什么问题?看起来很多程序员依然都在使用Python2?
确实还有相当多的程序员在使用Python2,不过Python3 才是Python 发展的未来,就像XP 和WIN7 一样。在《零基础入门学习Python》的系列教程准备中,小甲鱼发觉Python3 中的新特性确实很妙,很值得进行深入学习!你也不用担心,如果你了解了Python3,Python2 的代码阅读对于你来说根本不成问题!
第2课
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 里,这种做法叫做拼接字符串。
第3课
0. 编写程序:hello.py,要求用户输入姓名并打印“你好,姓名!”
https://www.wendangku.net/doc/876914890.html, = 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''\\'
第4课
测试题:
0. 请问以下代码会打印多少次“我爱鱼C!”
1.while 'C':
2.print('我爱鱼C!')
1. 请问以下代码会打印多少次“我爱鱼C!”
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. 尝试写代码实现以下截图功能:
2. 尝试写代码实现以下截图功能:
3. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!
回复您的答案即可查看参考答案!
测试题答案:
0. 请问以下代码会打印多少次“我爱鱼C!”
死循环,会一直打印“我爱鱼C!”(嗯,这也算是永远支持鱼C的方法之一),直到崩溃或者用户按下快捷键CTRL + C(强制结束)
造成死循环的原因是while 后边的条件永远为真(True),在Python 看来,只有以下内容会被看作假(注意冒号括号里边啥都没有,连空格都不要有!):False None 0 "" '' () [] {} 其他一切都被解释为真!
不妨试试:
1.while '':
2.print('进入循环')
3.print('退出循环')
复制代码
或者
1.while False:
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.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")
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
复制代码
3. 请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!小甲鱼希望你认真对待作业就像你希望小甲鱼推出高质量视频一样渴望^_^
第5课
测试题:
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)会返回
是整数。
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)永远是
其实有蛮多的做法可以实现的,不过就目前我们学习过的内容来看,还不足够。
所以,在让大家动手完成这道题之前,小甲鱼介绍一点新东西给大家!
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 表示字符串
1. 你知道为什么布尔类型(bool)的True 和False 分别用 1 和0 来代替吗?
你可能听说过计算机是很“笨”的,究其根本是因为它只认识二进制数,所以所有的编程语言最终都会转换成简单的二进制序列给CPU按照一定的规则解析。
由于二进制只有两个数:0 和1,因此用0 和 1 来表示False 和True 再适合不过了,因为不用浪费资源在转换的过程上!
2. 使用int() 将小数转换为整数,结果是向上取整还是向下取整呢?
我们可爱的小甲鱼说了,小数取整会采用比较暴力的截断方式,即向下取整。(注:5.5向上取整为6,向下取整为5)
3. 我们人类思维是习惯于“四舍五入”法,你有什么办法使得int() 按照“四舍五入”的方式取整吗?
int() 固然没那么“聪明”,但机器是死的,鱼油是活的!