第1讲
- Python 是什么类型的语言?
- Python是脚本语言
- 脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序。
- 脚本语言通常比 C语言、C++语言 或 Java 之类的系统编程语言要简单容易。
- 通常以容易修改程序的“解释”作为运行方式,而不需要“编译”
-
IDLE 是什么?
-
IDLE,全称:
Integrated Development and Learning Environment
,集成开发和学习环境。 -
IDLE是一个Python Shell,shell的意思就是“外壳”。
-
基本上来说,就是一个通过键入文本与程序交互的途径!像我们Windows那个cmd窗口,像Linux那个黑乎乎的命令窗口,他们都是shell,利用他们,我们就可以给操作系统下达命令。
-
同样的,我们可以利用IDLE这个shell与Python进行互动。
-
-
print() 的作用是什么?
- print() 会在输出窗口中显示一些文本(在这一讲中,输出窗口就是IDLE shell窗口)。
-
如果我需要在一个字符串中嵌入一个双引号,正确的做法是?
-
可以利用反斜杠(\)对双引号转义:
In [1]: print ('haha\"') haha"
-
或者用单引号引起这个字符串。例如:' I l"o"ve fishc.com '。
In [2]: print ('haha"') haha"
-
输入 >>>5+8 与输入 >>>print(5+8) 有何不同?
-
直接输入是将结果及类型打印到屏幕上
-
而print是将结果打印到屏幕上
In [15]: 'hello world' Out[15]: 'hello world' In [16]: print("hello world") hello world
-
第2讲
- Python中的BIF是什么?
-
Python中的BIF就是Built-in Functions,即内置函数的意思
-
内置函数就是为了方便程序员快速的编写脚本程序
-
如何查看Python中的BIF?
输入
dir(__builtins__)
,查看BIF列表,太多了,我截取了一部分,其中小写部分就是BIF了。In [17]: dir(__builtins__) Out[17]: ['ZeroDivisionError', '__IPYTHON__', '__build_class__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package__', '__spec__', 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'bytearray', 'bytes', 'callable',
-
在ipython中输入help(bin),关于这个bin的功能介绍就出来了
In [20]: help(bin) Help on built-in function bin in module builtins: bin(number, /) Return the binary representation of an integer. >>> bin(2796202) '0b1010101010101010101010'
-
Python 提供了非常丰富的内置函数,我们只需要直接调用即可,
-
例如 print() 的功能是“打印到屏幕”,input() 的作用是接收用户输入
(注:Python3 用 input() 取代了 Python2 的 raw_input()
- Python3 提供了多少个 BIF?
- 68 个,不信你自己数数看
第3讲
- 以下哪个变量的命名不正确?为什么?
(A) MM_520 (B) MM520 (C) 520_MM (D) _520_MM
- (C), Python命名不能以数字开头
-
除了使用饭斜杠(\)进行字符转义,还有什么方法可以打印:Let's go! 这个字符串?
In [47]: s = "Let's go!" In [48]: print(s) Let's go!
-
如果非要在原始字符串结尾输入反斜杠,可以如何灵活处理?
In [54]: s = r'C:\Python''\\' In [55]: s Out[55]: 'C:\\Python\\'
第4讲
-
请写出与 10 < cost < 50 等价的表达式
(10 < cost) and (cost < 50)
-
Python3 中,一行可以书写多个语句吗?
- 可以,语句之间用分号隔开即可
In [67]: 3 > 4 and \ ...: 1 < 2 Out[67]: False
- 或者也可以用括号括起来
In [68]: (3 > 4 and
...: 1 < 2)
Out[68]: False
-
Python3 中,一个语句可以分成多行书写吗
- 可以,一行过长的语句可以使用反斜杠或者括号分解成几行,不妨试试:
In [64]: 3 > 4 and \ ...: 1 < 4 Out[64]: False In [65]: 3 > 4 and ...: 1 < 4 File "<ipython-input-65-aeded9bb84bc>", line 1 3 > 4 and ^ SyntaxError: invalid syntax
-
Python3 中,一行可以书写多个语句吗
可以,语句之间用分号隔开
In [66]: print('hello '); print('world') hello world
-
Python中的逻辑
and
和or
,你理解嘛?- a and b:在a为false的时候,返回a,否则返回b。
- a or b: 在a为true的时候,返回a,否则返回b。
In [70]: 0 and 4 Out[70]: 0 In [71]: 1 and 4 Out[71]: 4
-
听说过“短路逻辑(short-circuit logic)”吗?
- 逻辑操作符有个有趣的特性:在不需要求值的时候不进行操作。
- 这么说可能比较“高深”,举个例子,表达式 x and y,需要 x 和 y 两个变量同时为真(True)的时候,结果才为真。因此,如果当 x 变量得知是假(False)的时候,表达式就会立刻返回 False,而不用去管 y 变量的值。
- 实际上,Python 的做法是如果 x 为假,表达式会返回 x 的值(0),否则它就会返回 y 的值
第5讲
- 在 Python 中,int 表示整型,那你还记得 bool、float 和 str 分别表示什么吗?
- bool:布尔类型
- float:浮点型
- str:字符串
- 你知道为什么布尔类型(bool)的 True 和 False 分别用 1 和 0 来代替吗?
- 计算机只认识0和1的二进制数,用 0 和 1 来表示 False 和 True ,不用浪费资源在转换的过程上!
- 使用 int() 将小数转换为整数,结果是向上取整还是向下取整呢?
- 小数取整会采用比较暴力的截断方式,即向下取整。(注:5.5向上取整为6,向下取整为5)。
In [14]: a = 5.99
In [15]: b = int(a)
In [16]: a
Out[16]: 5.99
In [17]: b
Out[17]: 5
-
我们人类思维是习惯于“四舍五入”法,你有什么办法使得 int() 按照“四舍五入”的方式取整吗?
In [22]: int(5.4 + 0.5) Out[22]: 5 In [23]: int(5.6 + 0.5) Out[23]: 6 In [24]: int(5.5 + 0.5) Out[24]: 6
-
取得一个变量的类型,视频中介绍可以使用 type() 和 isinstance(),你更倾向于使用哪个?
In [7]: a Out[7]: '11' In [8]: b Out[8]: 9 In [9]: type(a) Out[9]: str In [10]: type(b) Out[10]: int In [11]: isinstance(a, int) Out[11]: False In [12]: isinstance(a, str) Out[12]: True
- 建议使用 isinstance(),因为它的返回结果比较直接,另外 type() 其实并没有你想象的那么简单,我们后边会讲到。
-
Python3 可以给变量命名中文名,知道为什么吗?
- Pyhton3 源码文件默认使用utf-8编码(支持中文),这就使得以下代码是合法的:
In [31]: 大白菜 = '哈哈' In [32]: print(大白菜) 哈哈
-
判断input()的输入是否为数字:
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 H' >>> s.isupper() >>> True
-
写一个程序,判断给定年份是否为闰年。(注意:请使用已学过的 BIF 进行灵活运用)
// 闰年定义:能被4整除但不能被100整除,或者能被400整除都是闰年。 # encoding:utf-8 year = raw_input("请输入一个年份:") while not year.isdigit(): print("你输入的不是合法数字") year = raw_input("请重新一个年份:") year = int(year) if year % 4 == 0: if year % 400 == 0: print(str(year) + "年是闰年") elif year % 100 == 0: print(str(year) + "年不是闰年") else: print(str(year) + "年是闰年") else: print(str(year) + "年不是闰年")
-
浮点型数据用科学记数法表示
第6讲:常用操作符
- 优先级问题
-
Python 的 floor 除法现在使用 “//” 实现,那 3.0 // 2.0 您目测会显示什么内容呢?
- 答:如果回答是 1.5 那么很遗憾,您受到 C 语言的影响比较大,Python 这里会义无反顾地执行 floor 除法原则,答案是:1.0
-
a < b < c 事实上是等于?
- (a < b) and (b < c)
-
不使用 IDLE,你可以轻松说出 5 ** -2 的值吗?
- 0.04,也就是 1/25
-
请用最快速度说出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9
- 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 - 3 and 4 == 4,而 3 or 4 == 3。
-
请写一个程序打印出 0~100 所有的奇数。
# encoding:utf-8 for i in range(1, 101): if i % 2 != 0: print(str(i) + ' ')
-
爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。
#encoding:utf-8 n = 7 flag = False while not flag: if (n % 2 == 1) and (n % 3 == 2) and (n % 5 == 4) and (n % 6 == 5): print('台阶数为' + str(n)) flag = True else: n += 7
-
运算符的优先级:幂运算 > 正负号 > 算术运算符 > 比较运算符 > 逻辑运算符
第七课:了不起的分支和循环
-
assert 的作用是什么?
- assert这个关键字我们称之为“断言”,当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError的异常。
- 当我们在测试程序的时候就很好用,因为与其让错误的条件导致程序今后莫名其妙地崩溃,不如在错误条件出现的那一瞬间我们实现“自爆”。
- 一般来说我们可以用Ta再程序中置入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert关键字就非常有用了。
-
假设有 x = 1,y = 2,z = 3,请问如何快速将三个变量的值互相交换?
x, y, z = y, z, x
-
你听说过成员资格运算符吗?
-
Python 有一个成员资格运算符:in,用于检查一个值是否在序列中,如果在序列中返回 True,否则返回 False。
>>> name = '小甲鱼' >>> '鱼' in name True >>> '肥鱼' in name False
-
-
请将以下代码修改为三元操作符实现
x, y, z = 6, 5, 4 if x < y: small = x if z < small: small = z elif y < z: small = y else: small = z
实现:
x, y, z = 6, 5, 4 small = x if (x < y and x < z) else (y if y < z else z) print small
第九课:了不起的分支和循环3
-
下面的循环会打印多少次"I Love FishC"?
for i in 5: print('I Love FishC')
答:会报错,上节课的课后习题我们提到了 in 是“成员资格运算符”,而不是像 C 语言那样去使用 for 语法。Python 的 for 更像脚本语言的 foreach。
-
回顾一下 break 和 continue 在循环中起到的作用?
- break语句的作用是终止当前循环,跳出循环体。
- continue语句的作用是终止本轮循环并开始下一轮循环(这里要注意的是:在开始下一轮循环之前,会先测试循环条件)。
-
请问 range(10) 生成哪些数?
- 会生成 range(0, 10),list(range(0, 10)) 转换成列表是:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],注意不包含 10 哦。
-
【学会提高代码的效率】你的觉得以下代码效率方面怎样?有没有办法可以大幅度改进(仍然使用while)?
i = 0 string = 'ILoveFishC.com' while i < len(string)): print(i) i += 1
答:这段代码之所以“效率比较低”是因为每次循环都需要调用一次 len() 函数(我们还没有学到函数的概念,小甲鱼这里为零基础的朋友形象的解释下:就像你打游戏打得正HIGH的时候,老妈让你去买盐......你有两种选择,一次买一包,一天去买五次,或者一次性买五包回来,老妈要就直接给她。)
修改如下:i = 0 string = 'ILoveFishC.com' length = len(string) while i < length: print(i) i += 1
-
设计一个验证用户密码程序,用户只有三次机会输入错误,不过如果用户输入的内容中包含"*"则不计算在内。
#encoding:utf-8 password = 'fsy' user_in = raw_input("请输入密码:") time = 3 while time: if password == user_in: print("输入正确,请进") break else: if user_in.find('*') == 0: user_in = raw_input("您输错了,请重新:") continue user_in = raw_input("您输错了,请重新:") time -= 1
count = 3 password = 'FishC.com' while count: passwd = input('请输入密码:') if passwd == password: print('密码正确,进入程序......') break elif '*' in passwd: print('密码中不能含有"*"号!您还有', count, '次机会!', end=' ') continue else: print('密码输入错误!您还有', count-1, '次机会!', end=' ') count -= 1
-
编写一个程序,求 100~999 之间的所有水仙花数。
如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数。
for i in range(100, 1000):
sum = 0
temp = i
while temp:
sum = sum + (temp%10) ** 3
temp //= 10 # 注意这里要使用地板除哦~
if sum == i:
print(i)
-
三色球问题
有红、黄、绿三种颜色的求,其中红球 3 个,黄球 3 个,绿球 6 个。先将这 12 个球混合放在一个盒子中,从中任意摸出 8 个球,编程计算摸出球的各种颜色搭配。
print('red\tyellow\tgreen') for red in range(0, 4): 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)
第十课:列表:一个“打了激素”的数组
-
列表都可以存放一些什么东西?
- 答:我们说 Python 的列表是一个打了激素的数组,如果把数组比喻成集装箱,那么 Python 的列表就是一个大仓库,Ta 可以存放我们已经学习过的任何数据类型。
-
向列表增加元素有哪些方法?
- 答:这节课我们教过大家三种方法想列表增加元素,分别是:append()、extend() 和 insert()。
-
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']]
-
网友评论