第3章 流程控制语句
3.1程序的结构
计算机在解决某个具体问题时,主要有3种情况,分别是顺序执行所有的语句、选择执行部分语句和循环执行部分语句。程序设计中的3种基本结构为顺序结构、选择结构和循环结构。这3种结构的执行流程如图所示。
本章之前编写的多数实例采用的都是顺序结构。例如,定义一个字符串类型的变量,然后输出该变量,代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
mot_cn = "命运给予我们的不是失望之酒,而是机会之杯。" # 使用双引号,字符串内容必须在一行 print(mot_cn)
3.2选择语句
Python中选择语句主要有3种形式,分别为 if 语句、if...else 语句和 if...elif...else 多分支语句。
3.2.1最简单的if语句
Python中使用 if 保留字来组成选择语句,简单的语法格式如下:
if 表达式: # 英文状态下的冒号千万不能丢 语句块
其中,表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式(例如:a>b and a ! = c) ,如果表达式为真,则执行“语句块”;如果表达式的值为假,就跳过“语句块”,继续执行后面的语句,这种形式的 if 语句相当于汉语里的关联词语“如果……就……”。
实例01:判断输入的是不是黄蓉所说的说
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
print("今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?\n") number = int(input("请输入您认为符合条件的数:")) # 输入一个数 if number%3 ==2 and number%5 == 3 and number%7 == 2: # 判断是否符合条件 print(number,"符合条件:三三数之剩二,五五数之剩三,七七数之剩二")
当输入23时,符合条件。
使用 if 语句时,如果在符合条件时,需要执行多个语句,例如,程序的真正意图是当 bmi 的值小于18.5时,才输入 bmi 的值和提示信息“您的体重过轻~@_@~”,正取代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
if bmi<18.5: print("你的BMI指数为:"+str(bmi)) # 输出BMI指数 print("你的体重过轻~@_@~")
在上面的代码中,如果第二个输出语句没有缩进,代码如下:
if bmi<18.5: print("你的BMI指数为:"+str(bmi)) # 输出BMI指数 print("你的体重过轻~@_@~")
在执行程序时,无论BMI的值是否小于18.5,都会输出“您的体重过轻~@_@~”。这显然与程序的本意是不符的,但程序并不会报告异常,因此这种 bug 很难发现。
3.2.2 if...else 语句
Python中提供了 if...else 语句解决类似问题,其语法格式如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
if 表达式: 语句块1 else: 语句块2
使用 if...else 语句时,表达式可以是一个单纯的布尔值或变量,也可以是比较表达式或逻辑表达式,如果满足条件,则执行 if 后面的语句块,否则,执行 else 后面的语句块,这种形式的选择语句相当于汉语里的关联词语“如果……否则……”。
技巧:if...else 语句可以使用条件表达式进行简化,如下面的代码:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
a = -9 if a > 0: b = a else: b = -a print(b)
可以简化成:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
a = -9 b = a if a>0 else -a print(b)
上段代码主要实现绝对值的功能,如果 a>0 ,就把 a 的值赋值给变量 b ,否则将 -a 赋值给变量 b 。使用条件表达式的好处是可以使代码简洁,并且有一个返回值。
实例02:验证瑛姑给出的答案是否正确
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
print("今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问几何?\n") number = int(input("请输入您认为符合条件的数:")) # 输入一个数 if number%3 ==2 and number%5 == 3 and number%7 == 2: # 判断是否符合条件 print(number,"符合条件:三三数之剩二,五五数之剩三,七七数之剩二") else: print(number,"不符合条件")