第007、008讲:了不起的分支和循环1、2 | 课后测试题及答案

测试题:

1.if not (money < 100): 上边这行代码相当于?
if money >= 100
2.assert 的作用是什么?
assert这个关键字我们称之为“断言”,当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError的异常。
什么情况下我们会需要这样的代码呢?当我们在测试程序的时候就很好用,因为与其让错误的条件导致程序今后莫名其妙地崩溃,不如在错误条件出现的那一瞬间我们实现“自爆”。

一般来说我们可以用Ta再程序中置入检查点,当需要确保程序中的某个条件一定为真才能让程序正常工作的话,assert关键字就非常有用了。

assert len(lists) >=5 ##'列表元素个数小于5'
assert 2==1  ##'2不等于1'
  1. 假设有 x = 1,y = 2,z = 3,请问如何快速将三个变量的值互相交换?
x = 1
y = 2
z = 3
print(x,y,z)
x, y, z = z, y, x
print(x,y,z)
输出结果:
1 2 3
3 2 1

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

x = 1
y = 2
z = 3
print((x < y and [x] or [y])[0])
输出结果:
1

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

or

在布尔上下文中,从左到右进行运算,如果两个变量表达式的运算结果有一个真,则立刻返回该变量表达式的运算结果;如果所有变量表达式的运算结果都为假,则返回最后一个为假的表达式的运算结果。
若有真,返回第一个真值;若全假,返回最后一个假值。

and

在布尔上下文中,从左至右进行运算,如果两个变量表达式的运算结果都为真,则返回最后一个表达式的运算结果;如果某个变量表达式的运算结果为假,则返回第一个为假的表达式的运算结果。
若有假,返回第一个假值;若全真,返回最后一个真值。

[0]

re.findall提取出的信息是列表存储的,[0]即是将列表中的第一个数据从列表中提出来。

三元操作符

使用 if else 实现三目运算符(条件运算符)的格式如下:
exp1 if contion else exp2
condition 是判断条件,exp1 和 exp2 是两个表达式。如果 condition 成立(结果为真),就执行 exp1,并把 exp1 的结果作为整个表达式的结果;如果 condition 不成立(结果为假),就执行 exp2,并把 exp2 的结果作为整个表达式的结果。

前面的语句max = a if a>b else b的含义是:
如果 a>b 成立,就把 a 作为整个表达式的值,并赋给变量 max;
如果 a> b 不成立,就把 b 作为整个表达式的值,并赋给变量 max。

Python中的中括号[]:

代表list列表数据类型,列表是一种可变序列。创建方法既简单又特别。
5.你听说过成员资格运算符吗?
Python 有一个成员资格运算符:in,用于检查一个值是否在序列中,如果在序列中返回 True,否则返回 False。

in

如果在指定的序列中找到值返回 True,否则返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。

not in

如果在指定的序列中没有找到值返回 True,否则返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

动动手:

1.视频中小甲鱼使用 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('输入错误!')
输出结果:
请输入一个分数:100
A

2.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
 print(small)

参考代码:

x, y, z = 6, 5, 4
small = x if (x < y and x < z) else (y if y < z else z)
print(small)

3.请写下这一节课你学习到的内容:格式不限,回忆并复述是加强记忆的好方式!
三元操作符、[0]