python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python条件循环与异常处理

Python流程控制之条件循环与异常处理实战指南

作者:流㶡

在Python编程语言中,流程控制语句是构建程序逻辑的基础构件之一,它们决定了程序中语句的执行顺序,允许我们创建更加复杂和动态的代码结构,这篇文章主要介绍了Python流程控制之条件循环与异常处理实战的相关资料,需要的朋友可以参考下

前言

在编程中,流程控制是决定程序执行路径的核心机制。Python 提供了清晰、简洁的语法来实现条件判断、循环和异常处理,使代码逻辑更灵活、健壮。

1. 条件判断语句

条件判断用于根据布尔值(True/False)决定是否执行某段代码。

1.1if语句

最简单的条件判断形式:当条件为 True 时,执行代码块。

age = 18
if age >= 18:
    print("你已成年,可以投票!")

⚠️ 注意:Python 使用缩进(通常是 4 个空格)表示代码块,而非大括号 {}

1.2 布尔值(Boolean)

条件判断的核心是布尔表达式,其结果为 True 或 False

常见返回布尔值的操作:

print(5 > 3)        # True
print("a" == "A")   # False(区分大小写)
print(10 != 20)     # True

哪些值会被视为False?

其余所有值均为 True

if []: 
    print("不会执行")
if "Hello":
    print("非空字符串为 True")  # 会执行

1.3if + else语句

提供“二选一”逻辑:条件成立执行 if 块,否则执行 else 块。

score = 85
if score >= 60:
    print("及格!")
else:
    print("不及格,请努力!")

1.4if + elif + else语句

用于多分支判断。elif 是 “else if” 的缩写。

a = int(input("请输入您的年龄:"))
if a < 10:
    print("您是儿童")
elif a < 16:
    print("您是少年")
else:
    print("您比少年大")

🔍 执行规则:从上到下依次判断,一旦某个条件为 True,后续 elif/else 将被跳过

1.5 多个elif语句

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
您是老年人

1.6 条件判断语句的嵌套

条件判断语句中的代码块也可以包含一个或多个条件判断语句。在 if 块内部再写 if,实现更精细的逻辑控制。

a = int(input("请输入您的年龄:"))
if a < 10:
    if a < 1:        
        print("您是婴儿")
    else:
        print("您是儿童")
elif a < 16:
    print("您是少年")
else:
    print("您比少年大")

⚠️ 建议:嵌套不宜过深(一般不超过 3 层),否则影响可读性。

1.7 多个条件判断语句

使用逻辑运算符组合多个条件:

运算符含义示例
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("用户名或密码错误")

1.8if + else的复合写法(三元表达式)

Python 支持一行写法,适用于简单赋值或返回。

语法:

表达式1 if 条件判断语句 else 表达式2

示例:

age = 20
status = "成年" if age >= 18 else "未成年"
print(status)  # 成年

# 也可用于 print
print("及格" if score >= 60 else "不及格")

✅ 优点:简洁;❌ 缺点:复杂逻辑不适用,可读性下降。

2. 循环语句

循环用于重复执行某段代码,直到满足特定条件。

2.1for循环

用于遍历可迭代对象(如字符串、列表、字典、range 等)。

基本用法:

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

range()函数

生成数字序列,常用于控制循环次数。

调用方式说明示例
range(stop)从 0 到 stop-1range(3) → 0,1,2
range(start, stop)从 start 到 stop-1range(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循环的复合写法(列表推导式)

一行生成新列表,本质是 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]

2.2while循环

只要条件为 True,就持续循环。

count = 0
while count < 3:
    print(f"计数:{count}")
    count += 1  # 必须有退出机制,否则死循环!

⚠️ 警惕死循环:确保循环体内有改变条件的语句。

2.3 嵌套循环

在一个循环内部再写一个循环,常用于处理二维结构。

import time

for i in range(60):  
    for j in range(60):  
        time.sleep(1)  
        print(f'当前时间为 {i} 分 {j} 秒')
    print(f"{i} 分钟结束")

运行结果:

2.4break和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 中均可使用。

3. 异常处理语句

程序运行时可能遇到错误(如除零、文件不存在)。异常处理机制可捕获错误并优雅处理,避免程序崩溃。

3.1 异常处理语句的使用

使用 try...except 结构:

try:
    n = int(input("请输入一个整数:"))
    print(n)
except:
    print("您输入的不是一个整数")
a = 3
print("a的内容为:", a)

完整结构:

try:
    # 可能出错的代码
except ExceptionType1:
    # 处理异常1
except ExceptionType2:
    # 处理异常2
else:
    # 无异常时执行
finally:
    # 无论是否有异常,都会执行(常用于清理资源)

3.2 异常捕获

捕获多种异常:

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元/千克,根据颇客购买量的不同有不同的折扣。

项目任务:

现需要设计一个代码程序,用于实现在营业员输入白菜重量之后自动计算出顾客需要支付的金额。

项目实现代码:

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条件循环与异常处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文