目录:
1、课堂小练习shell
2、"悬挂else"测试
3、条件表达式(三元操做符)spa
4、断言code
5、课时08课后习题及答案视频
******************blog
1、课堂小练习input
******************io
如今来考考你们,按照100分制,90分以上成绩为A,80到90为B,60到80为C,60如下为D,写一个程序,当用户输入分数,自动转换为ABCD的形式打印。社区
#p4_1.py score = int(input('请输入一个分数:')) if 100 >= score >= 90: print('A') if 90 > score >= 80: print('B') if 80 > score >= 60: print('C') if 60 > score >= 0: print('D') if score < 0 or score > 100: print('输入错误!')
#p4_2.py
score = int(input('请输入您的分数:')) if 100 >= score >= 90: print('A') else: if 90 > score >= 80: print('B') else: if 80 > score >= 60: print('C') else: if 60 > score >= 0: print('D') else: print('输入错误!')
#p4_3.py score = int(input('请输入一个分数:')) if 100 >= score >= 90: print('A') elif 90 > score >= 80: print('B') elif 80 > score >= 60: print('C') elif 60 > score >= 0: print('D') else: print('输入错误!')
结果分析:假如输入的分数是98,按照第一种方法是第一次就判断成功,接着打印字母A,但接着会进行第2、3、4、五次判断,而后这些都不符合,退出程序。若采用第2、三种方法,那么在第一次判断成立并打印字母A后,接着不须要再进行任何判断就推出程序。可见虽然是很简单的例子,但就输入98来讲,假设第一次判断会消耗一个CPU的时间,那么第一种方法比第二和第三种方法多消耗了400%的时间!!!ast
*****************
2、"悬挂else"
*****************
什么叫“悬挂else”?
咱们举个例子,初学C语言的朋友可能很容易被如下代码欺骗:
if ( hi > 2 ) if( hi > 7 ) printf(“好棒!好棒!”); else printf(“切~”);
在这个例子中,虽然else很想和外层的if匹配,但事实上按照C语言的就近匹配原则这个else是属于内层if的。在Python中强制使用缩进,因此在Python中制造出悬挂else的问题是不可能的。
*********************************
3、条件表达式(三元操做符)
*********************************
有了这个三元操做符的条件表达式,你可使用一条语句来完成如下的条件判断和赋值操做:
x, y = 4, 5 if x < y: small = x else: small = y
例子能够改进为:
small = x if x < y else y
三元操做符语法:
a = x if 条件 else y (表示当条件为True的时候,a的值赋值为x,不然赋值为y。)
**********
4、断言
**********
assert这个关键字咱们称之为“断言”,当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError的异常。
举个例子:
>>> assert 3<4 >>> assert 3>4 Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> assert 3>4 AssertionError
通常来讲咱们能够用Ta在程序中置入检查点,当须要确保程序中的某个条件必定为真才能让程序正常工做的话,assert关键字就很是有用了。
*******************************
5、课时08课后习题及答案
*******************************
测试题:
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 分之间,所以根据统计规律,咱们还能够改进下程序以提升效率。
1. Python 的做者在很长一段时间不愿加入三元操做符就是怕跟C语言同样搞出国际乱码大赛,蛋疼的复杂度让初学者望而生畏,不过,若是你一旦搞清楚了三元操做符的使用技巧,或许一些比较复杂的问题反而迎刃而解。
请将如下代码修改成三元操做符实现:
x, y, z = 6, 5, 4 if x < y: small = x if z < small: small = z elif y < z: small = y else: small = z
答案:
测试题答案:
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。
>>> name = '小甲鱼' >>> '鱼' in name True >>> '肥鱼' in name False
动动手答案:
0. 视频中小甲鱼使用 if elif else 在大多数状况下效率要比所有使用 if 要高,但根据通常的统计规律,一个班的成绩通常服从正态分布,也就是说平均成绩通常集中在 70~80 分之间,所以根据统计规律,咱们还能够改进下程序以提升效率。
score = int(input('请输入一个分数:')) if 80 > score >= 60: print('C') elif 90 > score >= 80: print('B') elif 60 > score >= 0: print('D') elif 100 >= score >= 90: print('A') else: print('输入错误!') 复制代码
1. Python 的做者在很长一段时间不愿加入三元操做符就是怕跟C语言同样搞出国际乱码大赛,蛋疼的复杂度让初学者望而生畏,不过,若是你一旦搞清楚了三元操做符的使用技巧,或许一些比较复杂的问题反而迎刃而解。
small = x if (x < y and x < z) else (y if y < z else z)