文章目录
- 最简单的条件判断形式:当条件为 True 时,执行代码块。 age = 18 if age >= 18: print(“你已成年,可以投票!”) ⚠️ 注意:Python 使用缩进(通常是 4 个空格)表示代码块,而非大括号 {}。
- 条件判断的核心是布尔表达式,其结果为 True 或 False。
- 提供“二选一”逻辑:条件成立执行 if 块,否则执行 else 块。 score = 85 if score >= 60: print(“及格!”) else: print(“不及格,请努力!”)
- 用于多分支判断。elif 是 “else if” 的缩写。 a = int(input(“请输入您的年龄:”)) if a < 10: print(“您是儿童”) elif a < 16: print(“您是少年”) else: print(“您比少年大”) 🔍 执行规则:从上到下依次判断,一旦某个条件为 True,后续 elif/else 将被跳过。
- Python 允许任意数量的 elif,适用于复杂分级场景。当需要对多个条件进行判断时,可以插入多个elif语句。 a = int(input(“请输入您的年龄:”)) if a < 10: print(“您是儿童”) elif a < 16: print(“您是少年”) elif a < 30: print(“您是青年”) elif a < 59: print(“您是中年人”) else: print(“您是老年人”) 代码执行结果(当用户输入79): 请输入您的年龄:79您是老年人
- 条件判断语句中的代码块也可以包含一个或多个条件判断语句。在 if 块内部再写 if,实现更精细的逻辑控制。 a = int(input(“请输入您的年龄:”)) if a < 10: if a < 1: print(“您是婴儿”) else: print(“您是儿童”) elif a < 16: print(“您是少年”) else: print(“您比少年大”) ⚠️ 建议:嵌套不宜过深(一般不超过 3 层),否则影响可读性。
- 使用逻辑运算符组合多个条件: 运算符 含义 示例 and 且(都为真才真) age >= 18 and score >= 60 or 或(有一个为真即真) weather == "sunny" or temp > 30 not 非(取反) not is_raining username = “admin” password = “123456” if username == “admin” and password == “123456”: print(“登录成功!”) else: print(“用户名或密码错误”)
- Python 支持一行写法,适用于简单赋值或返回。
- 用于遍历可迭代对象(如字符串、列表、字典、range 等)。
- fruits = [“apple”, “banana”, “cherry”] for fruit in fruits: print(fruit)
- 生成数字序列,常用于控制循环次数。 调用方式 说明 示例 range(stop) 从 0 到 stop-1 range(3) → 0,1,2 range(start, stop) 从 start 到 stop-1 range(2, 5) → 2,3,4 range(start, stop, step) 指定步长 range(0, 10, 2) → 0,2,4,6,8 for i in range(5): print(f”第 {i+1} 次循环”)
- 一行生成新列表,本质是 for 的简化。 # 普通写法 squares = [] for x in range(5): squares.append(x ** 2) # 列表推导式(推荐) squares = [x ** 2 for x in range(5)] print(squares) # [0, 1, 4, 9, 16] 💡 列表推导式还可加条件: evens = [x for x in range(10) if x % 2 == 0] # [0, 2, 4, 6, 8]
- 只要条件为 True,就持续循环。 count = 0 while count < 3: print(f”计数:{count}”) count += 1 # 必须有退出机制,否则死循环! ⚠️ 警惕死循环:确保循环体内有改变条件的语句。
- 在一个循环内部再写一个循环,常用于处理二维结构。 import time for i in range(60): for j in range(60): time.sleep(1) print(f’当前时间为 {i} 分 {j} 秒’) print(f”{i} 分钟结束”) 运行结果:
- break:立即退出整个循环 continue:跳过本次循环剩余代码,进入下一次循环
- 使用 try…except 结构: try: n = int(input(“请输入一个整数:”)) print(n) except: print(“您输入的不是一个整数”) a = 3 print(“a的内容为:”, a)
-
- try: num = int(input(“请输入一个数字:”)) result = 100 / num except ValueError: print(“输入的不是有效数字!”) except ZeroDivisionError: print(“不能除以零!”) except Exception as e: print(f”发生了未知错误:{e}”) else: print(f”结果是:{result}”) finally: print(“程序结束。”)
- 异常 触发场景 ValueError 类型转换失败(如 int("abc")) ZeroDivisionError 除零错误 FileNotFoundError 文件未找到 IndexError 列表索引越界 KeyError 字典键不存在 ✅ 最佳实践: 尽量捕获具体异常,而非笼统的 Exception 在 except 中记录日志或提示用户,不要静默忽略错误
- 某超市的白菜标价为2.5元/千克,根据颇客购买量的不同有不同的折扣。 如果顾客的购买量小于2千克,则 打9折; 如果顾客的购买量为2~4(不包括4)千克,则打8折; 如果顾客的购买量为4~10(不包括10)千克,则打6折; 如果顾客的购买量大于等于10千克,则打4折。
- 现需要设计一个代码程序,用于实现在营业员输入白菜重量之后自动计算出顾客需要支付的金额。
- while True: try: weight = float(input(‘请输入白菜的重量:’)) break except: print(“输入错误,重新输入,”, end=”) if weight < 2.0: print(“请付款:”, weight*2.5*0.9, ‘元’) elif weight < 4.0: print(“请付款:”, weight*2.5*0.8, ‘元’) elif weight < 10.0: print(“请付款:”, weight*2.5*0.6, ‘元’) else: print(“请付款:”, weight*2.5*0.4, ‘元’)
- 以上代码只能实现计算一位顾客需要支付的金额,每成功计算出一位顾客需要支付的金额后,程序会自动结束。 基于此我们还可以将代码进行改进,以实现在计算完一位颐客需要支付的金额后会继快计算下一位顾客 需要支付的金额。改进后的代码如下: while True: try: weight = float(input(‘请输入白菜的重量:’)) if weight < 2.0: print(“请付款:”, weight*2.5*0.9, ‘元’) elif weight < 4.0: print(“请付款:”, weight*2.5*0.8, ‘元’) elif weight < 10.0: print(“请付款:”, weight*2.5*0.6, ‘元’)2 else: print(“请付款:”, weight*2.5*0.4, ‘元’) except: print(“输入错误,重新输入,”, end=”)
- 🔔改进后的代码程序更满足实际的使用需求,这是因为改进后的代码将条件判断语句加入了while循环语句的try代码块中,因此代码会一直循环下去
目录
- 前言
- 1. 条件判断语句
- 1.1if语句
- 1.2 布尔值(Boolean)
- 常见返回布尔值的操作:
- 哪些值会被视为False?
- 1.3if + else语句
- 1.4if + elif + else语句
- 1.5 多个elif语句
- 1.6 条件判断语句的嵌套
- 1.7 多个条件判断语句
- 1.8if + else的复合写法(三元表达式)
- 语法:
- 示例:
- 2. 循环语句
- 2.1for循环
- 基本用法:
- range()函数
- for循环的复合写法(列表推导式)
- 2.2while循环
- 2.3 嵌套循环
- 2.4break和continue语句
- 示例:
- 3. 异常处理语句
- 3.1 异常处理语句的使用
- 完整结构:
- 3.2 异常捕获
- 捕获多种异常:
- 常见内置异常类型:
- 项目案例:实现超市收银系统
- 项目描述:
- 项目任务:
- 项目实现代码:
- 项目实现结果:
- 改进后的项目实现结果:
- 总结
在编程中,流程控制是决定程序执行路径的核心机制。Python 提供了清晰、简洁的语法来实现条件判断、循环和异常处理,使代码逻辑更灵活、健壮。
条件判断用于根据布尔值(True/False)决定是否执行某段代码。
最简单的条件判断形式:当条件为 True 时,执行代码块。
age = 18
if age >= 18:
print("你已成年,可以投票!")
⚠️ 注意:Python 使用缩进(通常是 4 个空格)表示代码块,而非大括号
{}。
条件判断的核心是布尔表达式,其结果为 True 或 False。
print(5 > 3) # True
print("a" == "A") # False(区分大小写)
print(10 != 20) # True
False
None
- 数字
0、0.0
- 空字符串
""
- 空列表
[]、空字典 {}、空元组 ()
FalseNone0、0.0""[]、空字典 {}、空元组 ()其余所有值均为 True。
if []:
print("不会执行")
if "Hello":
print("非空字符串为 True") # 会执行
提供“二选一”逻辑:条件成立执行 if 块,否则执行 else 块。
score = 85
if score >= 60:
print("及格!")
else:
print("不及格,请努力!")
用于多分支判断。elif 是 “else if” 的缩写。
a = int(input("请输入您的年龄:"))
if a < 10:
print("您是儿童")
elif a < 16:
print("您是少年")
else:
print("您比少年大")
🔍 执行规则:从上到下依次判断,一旦某个条件为 True,后续 elif/else 将被跳过。
Python 允许任意数量的 elif,适用于复杂分级场景。当需要对多个条件进行判断时,可以插入多个elif语句。
a = int(input("请输入您的年龄:"))
if a < 10:
print("您是儿童")
elif a < 16:
print("您是少年")
elif a < 30:
print("您是青年")
elif a < 59:
print("您是中年人")
else:
print("您是老年人")
代码执行结果(当用户输入79):
请输入您的年龄:79
您是老年人
条件判断语句中的代码块也可以包含一个或多个条件判断语句。在 if 块内部再写 if,实现更精细的逻辑控制。
a = int(input("请输入您的年龄:"))
if a < 10:
if a < 1:
print("您是婴儿")
else:
print("您是儿童")
elif a < 16:
print("您是少年")
else:
print("您比少年大")
⚠️ 建议:嵌套不宜过深(一般不超过 3 层),否则影响可读性。
使用逻辑运算符组合多个条件:
| 运算符 | 含义 | 示例 |
|---|---|---|
and |
且(都为真才真) | age >= 18 and score >= 60 |
or |
或(有一个为真即真) | weather == "sunny" or temp > 30 |
not |
非(取反) | not is_raining |
username = "admin"
password = "123456"
if username == "admin" and password == "123456":
print("登录成功!")
else:
print("用户名或密码错误")
Python 支持一行写法,适用于简单赋值或返回。
表达式1 if 条件判断语句 else 表达式2
age = 20
status = "成年" if age >= 18 else "未成年"
print(status) # 成年
# 也可用于 print
print("及格" if score >= 60 else "不及格")
✅ 优点:简洁;❌ 缺点:复杂逻辑不适用,可读性下降。
✅ 优点:简洁;❌ 缺点:复杂逻辑不适用,可读性下降。
循环用于重复执行某段代码,直到满足特定条件。
用于遍历可迭代对象(如字符串、列表、字典、range 等)。
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
生成数字序列,常用于控制循环次数。
| 调用方式 | 说明 | 示例 |
|---|---|---|
range(stop) |
从 0 到 stop-1 | range(3) → 0,1,2 |
range(start, stop) |
从 start 到 stop-1 | range(2, 5) → 2,3,4 |
range(start, stop, step) |
指定步长 | range(0, 10, 2) → 0,2,4,6,8 |
for i in range(5):
print(f"第 {i+1} 次循环")
一行生成新列表,本质是 for 的简化。
# 普通写法
squares = []
for x in range(5):
squares.append(x ** 2)
# 列表推导式(推荐)
squares = [x ** 2 for x in range(5)]
print(squares) # [0, 1, 4, 9, 16]
💡 列表推导式还可加条件:
evens = [x for x in range(10) if x % 2 == 0] # [0, 2, 4, 6, 8]
只要条件为 True,就持续循环。
count = 0
while count < 3:
print(f"计数:{count}")
count += 1 # 必须有退出机制,否则死循环!
⚠️ 警惕死循环:确保循环体内有改变条件的语句。
在一个循环内部再写一个循环,常用于处理二维结构。
import time
for i in range(60):
for j in range(60):
time.sleep(1)
print(f'当前时间为 {i} 分 {j} 秒')
print(f"{i} 分钟结束")
运行结果:

break:立即退出整个循环
continue:跳过本次循环剩余代码,进入下一次循环
break:立即退出整个循环continue:跳过本次循环剩余代码,进入下一次循环
# break:找到目标就停止
for num in [1, 3, 5, 7, 9]:
if num == 5:
print("找到 5,退出循环")
break
print(num)
# continue:跳过偶数
for i in range(1, 6):
if i % 2 == 0:
continue
print(i) # 输出:1, 3, 5
✅ break 和 continue 在 for 和 while 中均可使用。
✅ break 和 continue 在 for 和 while 中均可使用。
程序运行时可能遇到错误(如除零、文件不存在)。异常处理机制可捕获错误并优雅处理,避免程序崩溃。
使用 try...except 结构:
try:
n = int(input("请输入一个整数:"))
print(n)
except:
print("您输入的不是一个整数")
a = 3
print("a的内容为:", a)
try:
# 可能出错的代码
except ExceptionType1:
# 处理异常1
except ExceptionType2:
# 处理异常2
else:
# 无异常时执行
finally:
# 无论是否有异常,都会执行(常用于清理资源)
try:
num = int(input("请输入一个数字:"))
result = 100 / num
except ValueError:
print("输入的不是有效数字!")
except ZeroDivisionError:
print("不能除以零!")
except Exception as e:
print(f"发生了未知错误:{e}")
else:
print(f"结果是:{result}")
finally:
print("程序结束。")
| 异常 | 触发场景 |
|---|---|
ValueError |
类型转换失败(如 int("abc")) |
ZeroDivisionError |
除零错误 |
FileNotFoundError |
文件未找到 |
IndexError |
列表索引越界 |
KeyError |
字典键不存在 |
✅ 最佳实践:
- 尽量捕获具体异常,而非笼统的
Exception- 在
except中记录日志或提示用户,不要静默忽略错误
某超市的白菜标价为2.5元/千克,根据颇客购买量的不同有不同的折扣。
- 如果顾客的购买量小于2千克,则 打9折;
- 如果顾客的购买量为2~4(不包括4)千克,则打8折;
- 如果顾客的购买量为4~10(不包括10)千克,则打6折;
- 如果顾客的购买量大于等于10千克,则打4折。
现需要设计一个代码程序,用于实现在营业员输入白菜重量之后自动计算出顾客需要支付的金额。
while True:
try:
weight = float(input('请输入白菜的重量:'))
break
except:
print("输入错误,重新输入,", end='')
if weight < 2.0:
print("请付款:", weight*2.5*0.9, '元')
elif weight < 4.0:
print("请付款:", weight*2.5*0.8, '元')
elif weight < 10.0:
print("请付款:", weight*2.5*0.6, '元')
else:
print("请付款:", weight*2.5*0.4, '元')

以上代码只能实现计算一位顾客需要支付的金额,每成功计算出一位顾客需要支付的金额后,程序会自动结束。
基于此我们还可以将代码进行改进,以实现在计算完一位颐客需要支付的金额后会继快计算下一位顾客 需要支付的金额。改进后的代码如下:
while True:
try:
weight = float(input('请输入白菜的重量:'))
if weight < 2.0:
print("请付款:", weight*2.5*0.9, '元')
elif weight < 4.0:
print("请付款:", weight*2.5*0.8, '元')
elif weight < 10.0:
print("请付款:", weight*2.5*0.6, '元')2
else:
print("请付款:", weight*2.5*0.4, '元')
except:
print("输入错误,重新输入,", end='')

🔔改进后的代码程序更满足实际的使用需求,这是因为改进后的代码将条件判断语句加入了while循环语句的try代码块中,因此代码会一直循环下去
到此这篇关于Python流程控制之条件循环与异常处理的文章就介绍到这了,更多相关Python条件循环与异常处理内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!
您可能感兴趣的文章:
- python条件和循环的使用方法
- Python中条件选择和循环语句使用方法介绍
- 对Python中的条件判断、循环以及循环的终止方法详解
- Python入门篇之条件、循环
- Python3基础之条件与循环控制实例解析
- 对python中的控制条件、循环和跳出详解
- Python 条件,循环语句详解
- Python条件语句与循环语句