理解条件测试后,就可以开始编写if语句了。if语句有很多种,选择使用哪种取决于要测试的条件数。前面讨论条件测试时,列举了多个if语句示例,下面更深入地讨论这个主题。
5.3.1 简单的 if 语句
最简单的if语句只有一个测试和一个操作:
if conditional_test:
do()
在第1行中,可包含任何条件测试,而在紧跟在测试后面的缩进代码块中,可执行任何操作。如果条件测试的结果为True,Python就会执行紧跟在if语句后面的代码;否则Python将忽略这些代码。
假设有两个表示某人年龄和性别的变量,而你想知道这个人是否够结婚的年龄,可使用如下代码:
age = 21
gender = 0 # 0表示女性,1表示男性,其他表示未知
if age >= 20 and gender == 0:
print('您已经到了合法结婚年龄!请赶快找个年龄大于22周岁的男人结婚!一定要生三胎哦!')
if age >= 22 and gender == 1:
print('您已经到了合法结婚年龄!请赶快找个年龄大于20周岁的女人结婚!一定要生三胎哦!')
在第3行的if语句处,程序判断这是否是一个年龄大于20岁的女性,如果是,则进入第4行的语句。第5行的if语句判断这是否是一个年龄大于22岁的男性,如果是,则进入第6行的语句。
由于age被设置为了21,性别设置为了女性,所以这是一个年龄大于20岁的女性,所以会输出 :
您已经到了合法结婚年龄!请赶快找个年龄大于22周岁的男人结婚!一定要生三胎哦!
5.3.2 if-else语句
经常需要在条件测试通过了时执行一个操作,并在没有通过时执行另一个操作;在这种情况下,可使用Python提供的if-else语句。if-else语句块类似于简单的if语句,但其中的else语句让你能够指定条件测试未通过时要执行的操作。
比如判断一个人喝酒:
age = 17
if age >= 18:
print('恭喜您,您已经是成年人了!您可以喝酒')
else:
print('抱歉,您还是未成年人,不能饮酒!')
如果第2行的条件测试通过了,就执行第一个缩进的print语句块;如果测试结果为False,就执行第4行的else代码块。这次age小于18,条件测试未通过,因此执行else代码块中的代码:
抱歉,您还是未成年人,不能饮酒!
5.3.3 if-elif-else 语句
经常需要检查超过两个的情形,为此可使用Python提供的if-elif-else结构。Python只执行if-elif-else结构中的一个代码块,它依次检查每个条件测试,直到遇到通过了的条件测试。测试通过后,Python将执行紧跟在它后面的代码,并跳过余下的测试。
如5.3.1中的例子中,年龄和性别确定后,第3行和第5行的if语句要么一个也进不去,要么只能最多进去一个,所以这样的写法会让程序多做无谓的判断。我们可以做如下修改:
age = 18
gender = 0 # 0表示女性,1表示男性,其他表示未知
if age >= 20 and gender == 0:
print('您已经到了合法结婚年龄!请赶快找个年龄大于22周岁的男人结婚!一定要生三胎哦!')
elif age >= 22 and gender == 1:
print('您已经到了合法结婚年龄!请赶快找个年龄大于20周岁的女人结婚!一定要生三胎哦!')
else:
print('您要么还太年轻,要么不男不女,总之依据中华人民共和国婚姻法没法结婚!')
第3行的if语句判断这个人是否是年满20周岁的女性,如果是,则执行里面的语句,然后直接跳出整个if语句。如果不是年满20周岁的女性,则进行第5行的elif判断这个人是否是年满22周岁的男性,如果是,则执行里面的语句,然后直接跳出整个if语句。如果这个人既不是年满20周岁的女性,也不是年满22周岁的男性,则直接进入else代码块,执行else里面的语句。
上面的例子中,是一个年龄18周岁的女性,所以她既不是年满20周岁的女性,也不是年满22周岁的男性,所以会执行else里面的print()函数,输出:
您要么还太年轻,要么不男不女,总之依据中华人民共和国婚姻法没法结婚!
5.3.4 使用多个 elif 代码块
可根据需要使用任意数量的elif代码块,例如:
age = 18
gender = 3 # 0表示女性,1表示男性,其他表示未知
if age >= 20 and gender == 0:
print('您已经到了合法结婚年龄!请赶快找个年龄大于22周岁的男人结婚!一定要生三胎哦!')
elif age >= 22 and gender == 1:
print('您已经到了合法结婚年龄!请赶快找个年龄大于20周岁的女人结婚!一定要生三胎哦!')
elif gender != 0 and gender != 1:
print('中华人民共和国婚姻法没法处理特殊性别的人,请再次确认自己的性别!')
else:
print('您太年轻,别老想着结婚,赶紧好好读书去!')
经过分析,可以很清楚地判断,上述例子肯定会打印出:
中华人民共和国婚姻法没法处理特殊性别的人,请再次确认自己的性别!