选择结构是一种条件控制语句,包含一个条件表达式,如果条件为真,则执行某些语句;条件为假则执行另外一些语句。选择结构让程序能够根据条件表达式选择应该执行的程序代码,就好比开车到十字路口,可以根据不同的情况来选择不同的路径,如图 1 所示。
图1
Python if条件语句
对 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 元
程序解说:
- 第 1 行:输入消费的金额。
- 第 2~3 行:由于 if 条件语句只包括一行程序代码 “Money*=1.1”,因此当消费金额不足 1200 元时,就会执行第 3 行的加收服务费运算。
【示例2】使用 if 条件语句判断体形是否过胖。代码如下:
- weight = input (‘请输入体重: ‘)
- andy = int (weight) #将输入体重的字符串类型转换为整数
- if andy >= 80: #判断体重数值是否大于或等于80
- print (‘体形过胖,要小心身材变形’)
输出结果:
请输入体重: 85
体形过胖,要小心身材变形
程序解说:
- 第 1 行:输入体重,并将输入的字符串赋给 weight 变量。
- 第 2 行:将 weight 变量的字符串通过 int() 函数转换为整数,再将该整数值赋给 andy 变量。
- 第 3~4 行:单向判断式 if,如果判断式成立则输出“体形过胖,要小心身材变形”。
【示例3】使用 if 条件语句判断停车时数。代码如下:
- print(“停车超过一小时,每小时收费40元”)
- t=int(input(“请输入停车几小时: “)) #输入小时数
- if t>=1:
- total=t*40 #计算费用
- print(“停车%d小时,总费用为:%d元” %(t,total)) #程序语句块是两行语句,都要缩进
输出结果:
停车超过一小时,每小时收费40元
请输入停车几小时: 7
停车7小时,总费用为:280元
程序解说:
- 第 2 行:输入停车小时数。
- 第 3 行:利用 if 语句,当输入的数字大于 1 时,执行第 4~5 行程序代码。
Python if…else 条件语句
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 所示。
图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的倍数
程序解说:
- 第 1 行:输入一个整数,并将该值赋给变量 num。
- 第 2~5 行:利用 “num%5” 取除以 5 的余数作为 if 语句的条件式判断依据。
【示例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
符合条件
程序解说:
- 第 1 行:任意输入一个整数。
- 第 3 行:利用 if 语句判断是否为 2 或 3 的倍数,与第 8 行的 else 语句为一组。
- 第 4~7 行:这是一组 if…else 语句,用来判断是否为 6 的倍数。
Python if…elif…else 条件语句
前面我们使用了 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 所示。
图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元
程序解说:
- 第 1 行:输入消费总金额,变量采用单精度浮点数类型,因为结果会有小数点位数。
- 第 2 行:if 条件判断语句,如果 cost 为 10 万元(包括 10 万元)以上,则打 8.5 折。
- 第 4 行:elif 条件判断语句,如果 cost 为 5 万元(包括 5 万元)到 10 万元,则打 9 折。
- 第 6 行:else 语句,判断如果 cost 小于 5 万元,则打 9.5 折。
【示例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
程序解说:
- 第 1~6 行:显示可供选择的相关信息。
- 第 8~17 行:整个 if…elif…else 条件语句针对输入的内容单独显示相关信息,其他没有指定的选项则一律由 else 语句处理。在这样的架构下,如果要增加可选择的项目,只需要再增加一组 elif 条件表达式即可。