先来几个生活中常见的小场景:
场景一:要不要带伞
如果明天下雨,我就带伞;
如果明天不下雨,我就不带伞了。
场景二:考试成绩评级
如果考试分数是90~100分,那么评级是A;
如果考试分数是80~89分,那么评级是B;
如果考试分数是70~79分,那么评级是C;
如果考试分数是60~69分,那么评级是D;
如果考试分数是0~59分,那么评级是E
类似以上如果xxx, 那就xxxx;否则,就xxxx
这种逻辑,在Python里对应的就是if...else...
例如:
# 示例1:天气问题
weather_rain = True # 定义一个变量表示是否下雨,初始值为True
if weather_rain == True:
print("下雨了,带伞!") # 如果weather_rain是True,则执行该语句。
else:
print("没下雨,不用带伞!") # 如果weather_rain不是True,则执行该语句。
# 示例2:考试成绩问题
score = 90 # 定义一个变量表示考试分数,初始值为90
if score >= 90:
print("成绩大于等于90,评级为A")
elif score >= 80:
print("成绩大于等于80,评级为B")
elif score >= 70:
print("成绩大于等于70,评级为C")
elif score >= 60:
print("成绩大于等于60,评级为D")
else:
print("成绩小于60,评级为E")
if...else...
本身很好理解,但是有几个小地方需要注意:
- 代码一次只会执行
if...else...
判定中的一个逻辑,即使是示例2:考试成绩问题
这种多分支判定,那么每一次,代码只会执行某一条print()
语句,而不会出现先执行print("成绩大于等于90,评级为A")
再执行print("成绩大于等于80,评级为B")
的情况。(也就是说,Python只要找到if...else...
中其中一个满足的条件,执行该条件下面对应的代码之后,就不会在去执行该if...else...
中其他判定条件下的语句) - 两个示例中,
if/elif/else
条件判定之后紧跟着的print()
语句都是需要缩进的,Python就是根据缩进来判定当某个条件满足时需要执行哪些代码。Python官方建议缩进长度为4个字节。
实践:猜数字游戏
'''
程序需求:
程序自动生成一个0~10之内的随机数,然后让用户输入一个数。
比较用户输入的数字与随机数,如果二者相等,则输出“牛批!”;如果用户输入大于随机数,则输出“太大了...”;如果用户输入小于随机数,则输出“太小了...”。
'''
import random # 用于生成随机数的模块
rand_num = random.randint(0, 10) # 随机生成一个0~10之间的整数
# 让用户输入一个0~10之间的整数,input()会把用户输入存为字符串,因此需要int()将其转换为整数类型
in_num = int(input("请输入一个0~10之间的整数:"))
if in_num == rand_num:
print("牛批") # 如果输入的数字和随机数相同,则执行该语句
elif in_num < rand_num:
print("太小了...") # 如果输入的数字小于随机数,则执行该语句
else:
print("太大了...") # # 如果输入的数字大于随机数,则执行该语句
注:上面的代码只是为了展示if/elif/else
的使用方法,所以代码不完善,当用户输入非数字时程序会崩溃;同时,改程序也没有用户输入的数字是否在0~10之间。