![零基础学Python程序设计](https://wfqqreader-1252317822.image.myqcloud.com/cover/24/43738024/b_43738024.jpg)
6.1 if语句
if语句是Python中最常用,也是最简单的条件语句。这种条件选择在日常生活中经常遇到。例如,如果上午有时间的话,我就去找你。在Python中,这种情况使用if语句表示。本节介绍if语句的相关知识。
6.1.1 单分支结构
if语句是单分支结构,只有一个条件和结果。它使用if保留字对条件进行判断。其语法结构如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-119-1.jpg?sign=1738879995-2O4pQy57xLYic0cHStjxZw5pHgkFZTSH-0-42da192987a41508edd99d96b69580e6)
其格式主要分为以下几部分。
❑ if:保留字。
❑ <条件>:用来判断的标准。当为单一条件时,它是一个关系表达式或布尔值;当为多个条件时,它是一个逻辑表达式。<条件>后面必须使用“:”。
❑ <语句>:当if的<条件>满足后要执行的一个语句,前面需要使用缩进(使用Tab键或4个空格),用来表达<语句>与if的包含关系。
提示:语法中的if、<条件>、“:”和<语句>共同构成Python的一个语句。
【实例6-1】下面使用if语句,实现:如果变量a大于10,则输出“a的值大于10”,代码如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-119-2.jpg?sign=1738879995-d0YWgqIyNMdLSP2dt9ZLpK64CuQ9DEAD-0-7e76a06beaa092ae287d51c318999f35)
在该实例中,条件为a>10,执行的语句为print('a的值大于10')。两者结合起来表示,当变量a大于10时,将输出“a的值大于10”。
当语句比较简单时,可以将语句与条件写到同一行,上述代码可以简写为:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-120-1.jpg?sign=1738879995-uxHmqMAWmVJ7bKlAvLMUHhbtmafVFZAr-0-eeaa5b3259e712fe564dede356b5e16c)
6.1.2 执行流程
在执行if语句时,先对if条件进行判断。如果条件成立(判断结果为True),则先执行if语句中的语句,再执行if语句以外的其他语句;如果条件不成立(判断结果为False),则直接跳过if语句,执行if语句以外的其他语句。if语句的执行流程图如图6.1所示。
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-120-2.jpg?sign=1738879995-aiKNK033vfXkSSMHVtPRd4fgey53aCcA-0-4885543f5676adc72f05c25113aad712)
图6.1 if语句的执行流程图
【实例6-2】下面编写一段包含if语句的代码,验证代码的执行流程。
(1)定义变量a,赋值为整数50。定义变量b,通过用户的输入进行赋值。使用if语句判断变量b的值是否大于20。如果条件成立,则输出变量a与变量b之和。最后,输出变量a与变量b之差。代码如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-120-3.jpg?sign=1738879995-q3fct9zncZLZxOg5aSMwvNNpLeJxzH5I-0-61faab486c287cd6c61dd1c31cd6e4e4)
在该实例中,加粗部分是一个if语句。条件为,判断用户输入的值是否大于20。print(a+b)属于if语句中的语句,而print(a-b)不属于if语句中的语句,它是if语句以外的其他语句。
(2)代码执行后,需要用户输入一个整数值。如果用户输入一个大于20的整数值(如60),则if语句会被执行,其他代码语句也会被执行。结果如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-120-4.jpg?sign=1738879995-WPZZYiFWSlIqQdsRlysYKvagf8U7osKZ-0-1ad84ab154c6929c658244483aee629d)
其中,60为用户输入的值,即变量b的值;110为if语句中print(a+b)语句执行结果;-10为其他代码print(a-b)语句执行结果。
(3)如果用户输入一个小于20的整数值(如10),if语句将被跳过,不会执行print(a+b)语句,只执行其他代码语句print(a-b)。结果如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-121-1.jpg?sign=1738879995-uVBwSCRtVgGdHA0QXXGw6f2LW03ayRm0-0-eaa8ed59065383d0f80e6fb7f8b20a96)
其中,40为print(a-b)语句的执行结果。
6.1.3 使用语句块
if语句可以包含一个语句,也可以包含多个语句。当包含多个语句时,这些语句共同组成语句块。每个语句之间必须使用相同的缩进。当if语句条件为True时,这些语句都会被执行。其语法格式如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-121-2.jpg?sign=1738879995-t7KooBYPhCmiIgAqjNBLlVhDnVanjg4X-0-d79c0cb4da1a0afe1517a69a883de983)
语法中的<语句1>和<语句2>共同构成语句块,前面使用了相同的缩进。当<条件>为True时,依次执行<语句1>和<语句2>。
【实例6-3】下面编写包含if语句的代码,if语句中将使用语句块。当用户输入符合条件的整数时,执行语句块。代码如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-121-3.jpg?sign=1738879995-WDwjMnS40zQDOMzRp5eADx5h2G0JaNXq-0-1483ddfa4783816316cb279bb6adae37)
执行代码,用户输入整数50,执行结果如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-121-4.jpg?sign=1738879995-3bAqJnRks4xEuLAn6S4tlwuvzvClAj7U-0-1676febce616795303ba744e5cabbffb)
说明:输入整数50时,变量b的值为50,满足if语句的条件b<100,执行了语句块。其中,2000为print(a*b)语句执行结果;1.25为print(b/a)语句执行结果。
6.1.4 if语句的连用
if语句的连用是指连续使用2个或多个if语句,实现连续判断作用。其语法格式如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-121-5.jpg?sign=1738879995-k5kP6CIdT3BHwrUdAGhnjdOdIyl3ypFj-0-2725d3005d5585b8834ac34fb86d0bc5)
代码中连续使用了3个if语句。其中,<语句1>、<语句2>和<语句3>前面是相同的缩进。执行流程如下:
(1)对第1个if语句的<条件1>进行判断,如果为True,则执行<语句1>,如果为False,则跳过第1个if语句。
(2)继续对第2个if语句的<条件2>进行判断,如果为True,则执行<语句2>,如果为False,则跳过第2个if语句。
(3)继续对第3个if语句的<条件3>进行判断,如果为True,则执行<语句3>,如果为False,则跳过第3个if语句。
(4)执行完成。
其执行流程图如图6.2所示。
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-122-1.jpg?sign=1738879995-8DAmdwmVPA1lBvIAsUxlHojOzcYoPJuJ-0-2e6ad273edb947d7e90e6909f6abf4bc)
图6.2 if语句的连用的执行流程图
【实例6-4】下面通过if语句的连用,实现对学生成绩的评估。其评估标准如表6-1所示。
表6.1 成绩评估标准
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-122-2.jpg?sign=1738879995-dwb2gdhrciSxQrcvBHa1GnGgppeTmbI8-0-9bbaebd5976810c41d6c4fa3e5569972)
(1)编写代码如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-122-3.jpg?sign=1738879995-luQPQAyCQtWUwkOYX0iaWlMIlZHmqJcx-0-428dc94d185a19aa41754432cd9b88d7)
说明:score是一个变量,表示成绩分数值。
(2)当输入的分数为58时,代码执行结果如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-123-1.jpg?sign=1738879995-UEZRgYbU7Z7iNRdmVSwFhMrD7tsaa43Z-0-a16985ed4375255b43fa986818a13311)
(3)当输入的分数为76时,代码执行结果如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-123-2.jpg?sign=1738879995-zORYL34mSZiMvIfvbENbmlo9GAf26AaV-0-da76e951b282955a8010993f66786bf3)
(4)当输入的分数为80时,代码执行结果如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-123-3.jpg?sign=1738879995-G4GAmrq8xeGIoISmIoNLyYFz22RkTtxx-0-dcd45f6366105a9f4675746b9d887516)
(5)当输入的分数为91时,代码执行结果如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-123-4.jpg?sign=1738879995-VvJppnUBKDwsk1qgoiuj8XPw0qxQtsTW-0-4af32a88b90821cec9bc82d353c5dfa4)
6.1.5 if语句的嵌套
if语句的嵌套是指在if语句(外if)中使用if语句(内if)。此时,内if语句相当于外if语句中的语句块。当条件中还包含其他条件时,可以嵌套使用if语句。其语法格式如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-123-5.jpg?sign=1738879995-tVRJqvP2kCx39y9cmNQdnqwCY70b4T0n-0-0264edcd5d40ac54e6815f4ad670c716)
执行流程如下。
(1)对外if语句的<条件1>进行判断,如果为True,则执行<语句1>。
(2)接着,对内if语句的<条件2>进行判断,如果为True,则执行<语句2>,反之,不执行<语句2>,全部if语句执行结束。
(3)如果在流程1中<条件1>的判断结果为False,则不执行任何语句,直接跳过全部if语句,执行结束。
其执行流程图如图6.3所示。
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-123-6.jpg?sign=1738879995-CQjoKIPPbRpY8HwuYFcDxYEACOxbPA27-0-b6851c3b47a17b7bc622b0927f7210a0)
图6.3 if语句的嵌套的执行流程图
【实例6-5】下面通过if语句的嵌套,对成绩分数进行评估。
(1)如果成绩大于或等于60分,为及格成绩,则输出“成绩及格”。当成绩小于80分时,输出“为一般”;当成绩大于或等于80分,小于90分时,输出“为良好”;当成绩大于或等于90分时,输出“为优秀”。代码如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-123-7.jpg?sign=1738879995-tFbYTBbgNgiYM5fJgLMpNYOlEHd1eTYP-0-5ea6b487650637d14cfac0f658456764)
(2)当输入的分数为63时,代码执行结果如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-124-1.jpg?sign=1738879995-5cfqB3dYDZWCrrTnqW9wUyzoypkCYSVr-0-e75e5dfda4f52de00dc77b4c58fb066b)
(3)当输入的分数为88时,代码执行结果如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-124-2.jpg?sign=1738879995-GTkeBVxXM6RPECUJq8KJDiUe1m5AEQqR-0-2394137f119208fb92bcce3655cbf401)
(4)当输入的分数为100时,代码执行结果如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-124-3.jpg?sign=1738879995-d2UCiJeeSAS1sxX3uWr5Cmb3HKmMNUze-0-ea09678e36b2353ffce0b09f9858d9aa)