选择结构是一种条件控制语句,包含一个条件表达式,如果条件为真,则执行某些语句;条件为假则执行另外一些语句。选择结构让程序能够根据条件表达式选择应该执行的程序代码,就好比开车到十字路口,可以根据不同的情况来选择不同的路径,如图 1 所示。
对 Python 程序来说,if 条件语句是个使用频率高且实用的语句。当 if 的判断条件成立(返回 1)时,程序将执行缩进的程序语句块;判断条件不成立(返回0)时,则不执行缩进的程序语句块,并结束 if 语句。
在设计程序的过程中,如果遇到只有单一测试条件的情况,就需要用到 if 条件语句来进行程序的编写。其语法如下所示。
if 条件表达式:
程序语句块
if 语句搭配条件表达式可以进行布尔判断来取得真值或假值。条件表达式之后要有 “:” 来作为缩进的开始。当条件表达式的执行结果为真时,就必须执行这个程序语句块。
注意,在 Python 的条件式判断中,符合条件时需要执行的程序语句块内的所有程序语句都必须缩进,否则解译时会产生错误。
例如下面的代码:
test_score=80
if test_score>=60:
print("You Pass!")
输出结果:
You Pass!
下面我们来看几个示例。
【示例1】使用 if 条件语句简单判断消费金额是否满 1200 元,如果没有满 1200 元,则加收 10% 的服务费。代码如下:
Money=int (input ("请输入消费的金额:"))
if Money<1200:
Money*=1.1; #消费未满 1200元,加收10%的服务费
print ("需支付的实际金额是 %5.0f 元" %Money)
输出结果:
请输入消费的金额:500
需支付的实际金额是 550 元
程序解说:
【示例2】使用 if 条件语句判断体形是否过胖。代码如下:
weight = input ('请输入体重: ')
andy = int (weight) #将输入体重的字符串类型转换为整数
if andy >= 80: #判断体重数值是否大于或等于80
print ('体形过胖,要小心身材变形')
输出结果:
请输入体重: 85
体形过胖,要小心身材变形
程序解说:
【示例3】使用 if 条件语句判断停车时数。代码如下:
print("停车超过一小时,每小时收费40元")
t=int(input("请输入停车几小时: ")) #输入小时数
if t>=1:
total=t*40 #计算费用
print("停车%d小时,总费用为:%d元" %(t,total)) #程序语句块是两行语句,都要缩进
输出结果:
停车超过一小时,每小时收费40元
请输入停车几小时: 7
停车7小时,总费用为:280元
程序解说:
if…else 条件语句的作用是判断条件式是否成立,是一个使用频率高且实用的语句。当条件成立(True)时,就执行 if 里的语句;条件不成立(False,或用 0 表示)时,则执行 else 里的语句。
如果有多重判断,可以加上 elif 语句。if…else 条件语句的语法如下。
if 条件表达式:
#如果条件成立,就执行这里面的语句
else:
#如果条件不成立,就执行这里面的语句
例如,要判断变量 a 是否大于或等于变量 b 时,条件式就可以写成如下形式。
if a >= b:
#如果a大于或等于b,就执行这里面的语句
else:
#如果a"不"大于或等于b,就执行这里面的语句
if…else 条件式流程如图 2 所示。
另外,如果 if…else 条件语句中使用了 and 或 or 等逻辑运算符,建议加上括号区分执行顺序,从而提高程序的可读性,例如下面的代码。
if (a==c) and (a>b):
#如果a等于c并且a大于b,就执行这里面的语句
else:
#如果上述条件不成立,就执行这里面的语句
例如下面的代码:
test_score=50
if test_score>=60:
print("You Pass!")
else:
print("You Fail")
输出结果:
You Fail
另外,Python 提供了一种更简洁的 if…else 条件表达式,格式如下。
X if C else Y
根据条件式返回两个表达式中的一个,当 C 为真时返回 X,否则返回 Y。
例如,判断整数 X 是奇数或偶数时,原本的程序会写成如下形式。
if (x % 2)==0:
y="偶数"
else:
y="奇数"
print('{0}'.format(y))
而现在只需要简单的一行程序语句就能达到同样的目的,如下所示。
print('{0}'.format("偶数" if (X % 2)==0 else "奇数"))
当 if 判断式为真时返回“偶数”,否则返回“奇数”。
再来看一个例子,先要求使用者输入身高数值[单位为厘米(cm)],如果所输入的身高数值大于或等于 180,则输出“身高不错”;如果小于 180,则输出“身高不算高”。如果用三元操作数来加以表示,其代码如下。
height = int(input('请输入身高:'))
print('身高不错' if height >= 180 else '身高不算高')
输出结果:
请输入身高:168
身高不算高
【示例3】使用 if…else 条件语句判断所输入的数字是否为 5 的倍数。代码如下:
num = int(input('请输入一个整数:'))
if num%5:
print(num, '不是5的倍数')
else:
print(num, '为5的倍数')
输出结果:
请输入一个整数:58
58 不是5的倍数
请输入一个整数:40
40 为5的倍数
程序解说:
【示例4】利用 if…else 条件语句判断使用者输入的整数是否为 2 或 3 的倍数,并且不为 6 的倍数。代码如下:
value=int(input("请任意输入一个整数:")) #输入一个整数
#判断是否为2或3的倍数
if value%2==0 or value%3==0:
if value%6!=0:
print("符合条件")
else:
print("不符合条件") #为6的倍数
else:
print("不符合条件")
输出结果:
请任意输入一个整数:8
符合条件
程序解说:
前面我们使用了 if…else 条件语句来做判断,当条件成立时执行 if 里的语句,反之则执行 else 里的语句。可是有时候可能想要做多个不同但相关条件的判断,然后根据判断结果来执行程序。
虽然使用多重 if 条件语句可以解决多种条件下的不同执行问题,但始终还是不够精简,这时 elif 条件语句就能派上用场了。elif 条件语句可以让程序代码的可读性更高。
注意,if 后面并不一定要有 elif 和 else,可以只有 if,或是 if…else,或是 if…elif…else 这 3 种情形。格式如下。
if 条件表达式1:
#如果条件表达式1成立,就执行这里面的语句
elif 条件表达式2:
#如果条件表达式2成立,就执行这里面的语句
else:
#如果上面的条件表达式都不成立,就执行这里面的语句
if…elif…else条件语句的流程如图 3 所示。
【示例5】用 if…elif…else 条件语句对分数做成绩等级的判断,其程序代码如下。
score=9000
if score >= 10000:
print('通过游戏的第4关卡')
elif score >= 8000:
print('通过游戏的第3关卡')
elif score >= 6000:
print('通过游戏的第2关卡')
elif score >= 4000:
print('通过游戏的第1关卡')
else:
print('没有通过游戏的任何关卡')
输出结果:
通过游戏的第3关卡
以下程序示例可以让消费者输入消费金额,并根据不同的消费金额打不同的折扣,使用 if…elif…else 条件语句来输出最后实际消费的金额。消费金额与折扣的关系如表 1 所示。
消费金额 | 折扣 |
---|---|
10万元及以上 | 15% |
5万元(含)到10万元 | 10% |
5万元以下 | 5% |
【示例6】购物折扣。代码如下:
cost=float(input("请输入消费总金额:"))
if cost>=100000:
cost=cost*0.85 #10万元(包括10万元)以上打8.5折
elif cost>=50000:
cost=cost*0.9 #5万元(包括5万元)到10万元打9折
else:
cost=cost*0.95 #5万元以下打9.5折
print("实际消费总额:%.1f元" %cost)
输出结果:
请输入消费总金额:1800
实际消费总额:1710.0元
程序解说:
【示例7】利用if…elif…else条件语句编写的一个点餐程序,并介绍如何增加条件表达式的应用范围。代码如下:
print("目前提供的选择如下")
print(" 0.查询其他相关的点心资料")
print(" 1.吉士汉堡" )
print(" 2.咖喱珍珠堡")
print(" 3.六块麦克鸡")
print("请选择您要的点心:" )
Select=int(input()) #输入点心的编号
if Select == 0: #是否选择第0项?
print("请稍等……正在查询其他相关的点心资料")
elif Select == 1: #是否选择第1项?
print("这个点心的单价:%d" %45)
elif Select == 2: #是否选择第2项?
print("这个点心的单价:%d" %55)
elif Select == 3: #是否选择第3项?
print("这个点心的单价:%d" %65)
else: #输入错误的处理
print("您可能输入错误,请重新输入")
输出结果:
目前提供的选择如下
0.查询其他相关的点心资料
1.吉士汉堡
2.咖喱珍珠堡
3.六块麦克鸡
请选择您要的点心:
2
这个点心的单价:55
程序解说: