3.2 选择结构与语句
微视频
条件判断语句就是对语句中不同条件的值进行判断,进而根据不同的条件执行不同的语句。
3.2.1 最简单的if语句
选择结构也称为分支结构,用于处理在程序中出现两条或更多执行路径可供选择的情况。选择结构可以用分支语句来实现。分支语句主要为if语句。
if语句的格式如下:
if 表达式1: 语句
【例3.1】验证输入的数是否可以整除2又能整除3(源代码\ch03\3.1.py)。
print("请输入既能整除2又能整除3的数") num= int(input("请输入您认为符合条件的数: ")) if num%2==0 and num%2==0: print(num,"符合条件!")
程序运行结果如图3-4所示。
图3-4 例3.1的程序运行结果
☆大牛提醒☆
在if语句后面必须加上冒号,否则会产生语法错误。例如下面的代码:
num=180 if num%2==0 and num%2==0 print(num,"符合条件!")
程序运行后,产生的错误信息如图3-5所示。
图3-5 语法错误
☆经验之谈☆
使用if语句时,当满足条件后,还可以执行多个语句。例如以下代码:
num=180 if num%2==0 and num%2==0: print(num,"符合条件!") print("恭喜您答对了!")
3.2.2 if…else语句
if语句是使用非常普遍的条件选择语句,每一种编程语言都有一种或多种形式的if语句,在编程中它是经常被用到的。
if语句的格式如下:
if 表达式1: 语句1 elif 表达式2: 语句2 ... else: 语句n
若表达式1为真,则Python运行语句1,反之则向下运行。如果没有条件为真,就运行else内的语句。elif与else语句都是可以省略的。可以在语句内使用pass语句,表示不运行任何动作。
☆大牛提醒☆
在使用if…else语句时,需要注意以下问题:
(1)每个条件后面要使用冒号(:),表示接下来是满足条件后要执行的语句块。
(2)使用缩进划分语句块,相同缩进数的语句在一起组成一个语句块。
(3)在Python中没有switch…case语句。
【例3.2】计算输入的两个数的差值(源代码\ch03\3.2.py)。
这里首先要判断输入的两个数的大小,然后再去求差值。
a= int(input("请输入第1个数: ")) b=int(input("请输入第2个数: ")) if a<=b: print("它们的差值:",b-a) elif a>b: print ("它们的差值:",a-b)
程序运行结果如图3-6所示。
图3-6 例3.2的程序运行结果
该程序是一个选择结构的程序,在执行过程中会按照键盘输入值的大小顺序选择不同的语句执行。若a>b,则执行print("它们的差值:",b-a);若a<=b,则执行print ("它们的差值:",a-b)。
☆大牛提醒☆
elif和else语句都不能单独使用,必须配合if语句一起使用。
【例3.3】根据输入的销售额计算奖金(源代码\ch03\3.3.py)。
这里模拟销售奖金的发放过程。首先使用if语句实现多条件判断,然后使用int()函数将输入的内容强制转换为整数类型。
sales= int(input("请输入本季度销售额: ")) if sales <10000: print("本季度没有奖金!") elif 10000 <= sales <300000: print("本季度的奖金为1万元!") elif 300000 <= sales <1000000: print("本季度的奖金为3万元!") else: print("本季度的奖金为5万元!")
程序运行结果如图3-7所示。
图3-7 例3.3的程序运行结果
☆大牛提醒☆
使用if语句经常犯的错误包括以下两种。
(1)经常错把=和==混用,而且出现逻辑上的错误。“=”是赋值运算符,“==”是关系运算符的“等于号”,两者是不同的,千万不能混淆。例如:
if aa=120000: print("本季度的奖金为5万元!")
(2)当使用布尔型的变量作为判断条件时,假设布尔型变量为aa,比较规范的格式如下:
if aa #表示为真 if not aa #表示为假
不符合规范的格式如下:
if aa==True #不符合规范 if aa==False #不符合规范
3.2.3 if嵌套
在嵌套if语句中,可以把if…elif…else结构放在另外一个if…elif…else结构中。该语法格式如下:
if 表达式1: 语句 if 表达式2: 语句 elif 表达式3: 语句 else 语句 elif 表达式4: 语句 else: 语句
【例3.4】判断输入的高考成绩是否过了本科线(源代码\ch03\3.4.py)。
print ("欢迎进入高考分数线查询系统") num=int(input("请输入您的高考分数:")) #获取用户输入的分数,并转换为整数 if num<430: #分数小于430,没有过本科分数线 print ("很遗憾,您没有过本科线!") else: if 430<=num<530: #分数大于或等于430而小于530,过本科二批分数线 print ("恭喜!您已经过本科二批分数线!") else: #530,过本科一批分数线 print ("恭喜!您已经过本科一批分数线!")
程序运行结果如图3-8所示。
图3-8 例3.4的程序运行结果
3.2.4 多重条件判断
在Python编程中,经常会遇到多重条件比较的情况。在多重条件比较时,需要用到and或or运算符。其中,and运算符用于多个条件同时满足的情况;or运算符用于只有一个条件满足的情况。
【例3.5】多重条件判断一个三角形(源代码\ch03\3.5.py)。
a= int(input("请输入三角形的第一条边: ")) b= int(input("请输入三角形的第二条边: ")) c= int(input("请输入三角形的第三条边: ")) if a ==b and a ==c: print("等边三角形") elif a==b or a==c or b==c: print("等腰三角形") elif a==b or a==c or b==c: print("等腰三角形") elif a*a+b*b==c*c or a*a+c*c==b*b or c*c+b*b==a*a : print("直角三角形") else: print("一般三角形")
程序运行结果如图3-9所示。
图3-9 例3.5的程序运行结果