008,分支和循环2
008,分支和循环2
判断和循环
例子:按照100分制,90分以上成绩为A,80-90为B,60-80为C,60以下为D,写一个程序,当用户输入分数,自动转换为ABCD形式的打印。
第一个方案:
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('输入错误')
第二种方法:
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('输入错误。')
第三种方法:
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('输入错误。')
elif =else if 的缩写
python可以有效避免“悬挂else”
何谓“悬挂else”?例子:
if (hi > 2)
if (hi > 7)
printf("好棒好棒");
else
printf("切~")
按照C语言的就地匹配原则,else会跟第二个if匹配,容易出bug
python强制使用正确的缩进。
条件表达式 (三元操作符)如:
x,y = 4,5
if x < y:
small = x
else:
small = y
可以改进为:
small = x if x < y else y
语法:x if 条件 else y
断言(assert)
assert这个关键字我们称之为“断言”,当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError的异常,如:
>>> assert 3 > 4
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
assert 3 > 4
AssertionError
>>>
一般来说,我们可以用它在程序中置入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert关键字就非常有用了。
测试题:
0. if not (money < 100): 上边这行代码相当于?
答:if (money >= 100)
1. assert 的作用是什么?
答:检查条件是否为真。
2. 假设有 x = 1,y = 2,z = 3,请问如何快速将三个变量的值互相交换?
答: x=z-y,y=z-x,z=x+y ?参考答案:x, y, z = z, y, x (WTF,啥意思?!)
3. 猜猜 (x < y and [x] or [y])[0] 实现什么样的功能?
答:不懂
参考答案:这其实是 Python 的作者还没有为 Python 加入三元操作符之前,Python 社区的小伙伴们灵活的使用 and 和 or 搭配来实现三元操作符的功能,这里边有涉及到列表和切片的知识,这部分知识很快就会讲解,迫不及待的朋友可以先稍微预习下。
4. 你听说过成员资格运算符吗?
答:百度之:集合成员资格运算符:IN ,NOT IN. IN 表示在集合中查询。NOT IN表示不在集合中查询。
参考答案:Python 有一个成员资格运算符:in,用于检查一个值是否在序列中,如果在序列中返回 True,否则返回 False。
动动手:
0. 视频中小甲鱼使用 if elif else 在大多数情况下效率要比全部使用 if 要高,但根据一般的统计规律,一个班的成绩一般服从正态分布,也就是说平均成绩一般集中在 70~80 分之间,因此根据统计规律,我们还可以改进下程序以提高效率。 题目备忘:按照100分制,90分以上成绩为A,80到90为B,60到80为C,60以下为D,写一个程序,当用户输入分数,自动转换为ABCD的形式打印。
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('输入错误。')
其实就是把概率高的条件放在第一个if语句中。
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
答:small = z if z < x if x < y or y if y < z else z
参考答案:small = x if (x < y and x < z) else (y if y < z else z)