elif
如果有这样一种情况:当条件A满足时做事情1;当条件A不满足、条件B满足时做事情2;当条件B不满足、条件C满足时做事情3,那该怎么实现呢?
使用 elif
一、 elif的功能
elif的使用格式如下:
if xxx1: 事情1 elif xxx2: 事情2 elif xxx3: 事情3
说明:
- 当xxx1满足时,执行事情1,然后整个if结束
- 当xxx1不满足时,那么判断xxx2,如果xxx2满足,则执行事情2,然后整个if结束
- 当xxx1不满足时,xxx2也不满足,如果xxx3满足,则执行事情3,然后整个if结束
demo:
score = 77 if score>=90 and score<=100: print('本次考试,等级为A') elif score>=80 and score<90: print('本次考试,等级为B') elif score>=70 and score<80: print('本次考试,等级为C') elif score>=60 and score<70: print('本次考试,等级为D') elif score>=0 and score<60: print('本次考试,等级为E')
二、注意点
可以和else一起使用
if 性别为男性: 输出男性的体重 ... elif 性别为女性: 输出女性的体重 ... else: 第三种性别的体重 ...
说明:
- 当 “性别为男性” 满足时,执行 “输出男性的体重”的相关代码
- 当 “性别为男性” 不满足时,如果 “性别为女性”满足,则执行 “输出女性的体重”的相关代码
- 当 “性别为男性” 不满足,“性别为女性”也不满足,那么久默认执行else后面的代码,即 “第三种性别的体重”相关代码
- elif必须和if一起使用,否则出错 else 一般用在最后,即所有条件都不满足时使用
if嵌套
通过学习if的基本用法,已经知道了
- 当需要满足条件去做事情的这种情况需要使用if
- 当满足条件时做事情A,不满足条件做事情B的这种情况使用if-else
想一想:
- 坐火车或者地铁的实际情况是:先进行安检如果安检通过才会判断是否有车票,或者是先检查是否有车票之后才会进行安检,即实际的情况某个判断是再另外一个判断成立的基础上进行的,这样的情况该怎样解决呢?
答:
if嵌套
一、if嵌套的格式
if 条件1: 满足条件1 做的事情1 满足条件1 做的事情2 if 条件2: 满足条件2 做的事情1 满足条件2 做的事情2
说明
- 外层的if判断,也可以是if-else
- 内层的if判断,也可以是if-else
- 根据实际开发的情况,进行选择
二、if嵌套的应用
demo:
ticket = 1 # 用1代表有车票,0代表没有车票 knife_length = 9 # 刀子的长度,单位为cm if ticket == 1: print("有车票,可以进站") if knife_length < 10: print("通过安检") print("终于可以见到Ta了,美滋滋~~~") else: print("没有通过安检") print("刀子的长度超过规定,等待警察处理...") else: print("没有车票,不能进站") print("亲爱的,那就下次见了")
结果1:ticket = 1;knife_length = 9
有车票,可以进站 通过安检 终于可以见到Ta了,美滋滋~~~
结果2:ticket = 1;knife_length = 20
有车票,可以进站 没有通过安检 刀子的长度超过规定,等待警察处理...
结果3:ticket = 0;knife_length = 9
没有车票,不能进站 亲爱的,那就下次见了
结果4:ticket = 0;knife_length = 20
没有车票,不能进站 亲爱的,那就下次见了
为什么结果3和结果4相同???
猜拳游戏
运行效果:
参考代码:
import random player = input('请输入:剪刀(0) 石头(1) 布(2):') player = int(player) # 产生随机整数:0、1、2 中的某一个 computer = random.randint(0,2) # 用来进行测试 #print('player=%d,computer=%d',(player,computer)) if ((player == 0) and (computer == 2)) or ((player ==1) and (computer == 0)) or ((player == 2) and (computer == 1)): print('获胜,哈哈,你太厉害了') elif player == computer: print('平局,要不再来一局') else: print('输了,不要走,洗洗手接着来,决战到天亮')
if补充内容
一、区间比较:
在Python中允许类似于 5<a<10 的写法,这种写法在很多编程语言里都是不允许的,需要使用逻辑与运算符进行连接。
a = 10 1<a<20 # True 11<a<20 # False
二、三元运算符:
格式: 变量 = 值1 if 条件 else 值2 当条件成立时把 值1 赋值给变量,条件不成立时把 值2 赋值给变量,其实就是对if…else 语句的一种简写。
示例:
a = 10 b = 30 if a > b: c = a else: c = b print('a和b两个数的较大值是%d'%c)
以上的 if…else 代码可以简写成以下格式:
a = 10 b = 30 c = a if a>b else b print('a和b两个数的较大值是%d'%c)
三、自动类型转换
if 语句需要一个判断条件,这个判断条件的结果需要一个布尔值。如果此时输入的判断条件不是一个布尔值,在代码执行的过程中,会将这个值自动转换成为一个布尔值。
if 1<2: # if语句的判断条件需要一个布尔值 print('1小于2') if "hello": # if 判断条件后没有传入布尔值,会自动把它转换成为布尔值 print("这段代码是否会输出呢?")
提示:在Python中,转换成为布尔值时,只有 0,“”,‘’,None,(),{},[] 会被转换成为False,其他都会被转换成为True