第007、008讲:了不起的分支和循环1、2

第007、008讲:了不起的分支和循环1、2


测试题:

0. if not (money < 100): 上边这行代码相当于?

if money >= 100:

1. assert 的作用是什么?

断言,当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError的异常

2. 假设有 x = 1,y = 2,z = 3,请问如何快速将三个变量的值互相交换?

x,y,z = 1,2,3
x,y,z = y,z,x

3. 猜猜 (x < y and [x] or [y])[0] 实现什么样的功能?

    这其实是 Python 的作者还没有为 Python 加入三元操作符之前,Python 社区的小伙伴们灵活的使用 and 和 or 搭配来实现三元操作符的功能,这里边有涉及到列表和切片的知识,这部分知识很快就会讲解,迫不及待的朋友可以先稍微预习下。

    这个式子可以简化成(x<y and x or y),即x<y为真时输出x,否则输出y。但当x和y的有值为0(等同于flase)的情况就会判断失误。因此改为[x]和[y],这样[x]和[y]就都为真了,再加上(0),又变成了列表的第一个元素,即复原为x或y。

一般python的写法为 x if x<y else y
这样代码更易理解。

4. 你听说过成员资格运算符吗?

Python 有一个成员资格运算符:in,用于检查一个值是否在序列中,如果在序列中返回 True,否则返回 False。
例如:
>>> name = '小甲鱼'
>>> '鱼' in name
True
>>> '肥鱼' in name
False

当下节课我们讲解 for 语句的时候,你看到 in 会不会就有了更深入的理解?!

动动手:

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 100 >= score >= 90:
    print('A级')
elif score < 60:
    print('D级')
else:
    print('输入错误')

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
# 这是求最小数
x,y,z = 4,5,6
small = x if (x<y and x<z) else (y if y<z else z)
posted @ 2021-05-19 16:22  田二爷  阅读(79)  评论(0)    收藏  举报