Python入门很轻松(微课超值版)
上QQ阅读APP看书,第一时间看更新

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的程序运行结果