0基础Python程序控制语句详解

        在 Python 编程的世界里,控制语句就如同交通信号灯,指挥着程序的执行流程。它们赋予了程序决策的能力,让代码不再是简单的线性执行,而是能够根据不同条件做出不同反应,或是重复执行特定的代码块。对于零基础的编程学习者来说,掌握控制语句是踏入编程殿堂的关键一步,它能让你编写的程序更加智能、灵活,满足多样化的需求。接下来,让我们一同深入探索 Python 控制语句的奥秘。

1. 条件控制语句

一、基础 if 语句

语法

if condition:
    # 条件为 True 时执行的代码块
    statement(s)

示例

age = 18
if age >= 18:  # 条件表达式返回布尔值
    print("已成年")  # 缩进的代码块(通常为4个空格)

注意事项

  1. 冒号 : 不可省略:Python 使用冒号标记代码块的开始。
  2. 严格缩进:同一代码块内的语句必须保持相同缩进(通常为 4 个空格)。
  3. 条件表达式:可以是比较运算(如 > 5)、逻辑运算(如 x > 0 and y < 10)或布尔值(如 True)。

二、双分支 if-else 结构

语法

if condition:
    # 条件为 True 时执行
    statement1
else:
    # 条件为 False 时执行
    statement2

示例

score = 75
if score >= 60:
    print("及格")
else:
    print("不及格")

注意事项

  1. else 后不跟条件else 代表所有不满足 if 条件的情况。
  2. 代码块互斥执行if 和 else 的代码块只会执行其中一个。

三、多分支 if-elif-else 结构

语法

if condition1:
    statement1
elif condition2:  # 可多个 elif
    statement2
else:  # 可选
    statement3

实例:

level = 3
if level == 1:
    print("初级")
elif level == 2:
    print("中级")
elif level == 3:
    print("高级")
else:
    print("未知等级")

注意事项:

  1. 执行顺序:按 if → elif → else 的顺序依次判断,一旦某个条件为 True,后续分支将被跳过。
  2. else 可选:若所有条件都不需要默认处理,可省略 else
  3. 避免条件重叠:确保各条件互斥(例如使用范围判断时,区间不重叠)。

四、嵌套条件语句

示例

x = 10
if x >= 0:
    if x == 0:  # 内层 if
        print("零")
    else:
        print("正数")
else:
    print("负数")

注意事项

  1. 缩进层级:内层条件语句需在所属外层代码块的基础上进一步缩进。
  2. 逻辑清晰性:嵌套层级不宜过深,建议不超过 3 层,否则可用 and/or 合并条件或重构代码。

五、常见注意事项汇总

  1. 条件表达式的隐式布尔转换

    • 非布尔值会自动转换为布尔类型(例如 0None、空列表 [] 等为 False,其他值为 True)。
    name = ""
    if not name:  # 空字符串视为 False
        print("姓名不能为空")
    
  2. 逻辑运算符优先级

    • 优先级顺序:not > and > or,建议用括号明确分组。
    # 正确写法:避免歧义
    if (age >= 18) and (country == "China"):
        pass
    

  3. 空代码块的占位符

    • 若条件成立时无需执行任何操作,可用 pass 语句占位。
    if x > 0:
        pass  # 占位,之后补充代码
    

  4. 单行条件表达式(三元运算符)

    • 适用于简单赋值场景,避免复杂逻辑。
    result = "及格" if score >= 60 else "不及格"

2. 循环控制语句

一、for 循环

语法

for 变量 in 可迭代对象:
    # 循环体

示例

# 遍历列表
for fruit in ["apple", "banana"]:
    print(fruit)

# 使用 range()
for i in range(3):  # 输出 0,1,2
    print(i)

注意事项

  1. 循环变量在循环结束后仍存在。
  2. 避免在遍历过程中修改列表(改用副本)。

二、while 循环

语法

while 条件:
    # 循环体

示例

count = 0
while count < 3:
    print(count)
    count += 1

注意事项

  1. 必须确保循环条件能变为 False,否则导致无限循环。
  2. 循环变量需在 while 前初始化。

三、循环的 else 子句

作用:循环正常结束后执行(未被 break 终止)。

示例

# for 循环的 else
for i in range(3):
    print(i)
else:
    print("循环结束")  # 会执行

# while 循环的 else
count = 0
while count < 3:
    print(count)
    count += 1
else:
    print("循环结束")  # 会执行

四、嵌套循环

示例:打印矩形

for i in range(3):  # 行数
    for j in range(5):  # 列数
        print("*", end=" ")
    print()  # 换行

五、常见陷阱

  1. 无限循环

    # 错误:缺少循环变量更新
    while True:
        print("Hello")  # 无限打印
    

  2. 遍历并修改列表

    # 错误:结果可能不符合预期
    numbers = [1, 2, 3]
    for num in numbers:
        numbers.remove(num)  # 结果:[2]
    
    # 正确:使用副本
    for num in numbers.copy():
        numbers.remove(num)  # 结果:[]

3. 流程跳转语句

一、break 语句

作用:立即终止当前所在的循环(for 或 while),跳出循环体。

示例

for i in range(5):
    if i == 3:
        break  # 当 i=3 时终止循环
    print(i)  # 输出:0, 1, 2

注意事项

  • 只影响最内层的循环。
  • 循环的 else 子句不会执行(如果有)。

二、continue 语句

作用:跳过当前循环的剩余代码,直接进入下一次循环迭代。

示例

for i in range(5):
    if i % 2 == 0:
        continue  # 当 i 为偶数时跳过后续代码
    print(i)  # 输出:1, 3

注意事项

  • 同样只影响最内层的循环。
  • 循环变量会正常更新(如 for 中的迭代变量、while 中的计数器)。

三、pass 语句

作用:空语句,用作占位符,不执行任何操作。

示例

def func():
    pass  # 占位,后续补充函数体

if x > 0:
    pass  # 占位,暂不执行任何操作

注意事项

  • 用于语法上需要语句,但逻辑上无需执行任何代码的场景。

4. 特殊控制结构

一、with 语句

作用:自动管理资源(如文件、网络连接等)的分配与释放,确保资源在使用后被正确清理。

语法

with 表达式 [as 变量]:
    # 代码块

示例:文件操作

with open('example.txt', 'r') as f:
    content = f.read()
    # 文件在 with 块结束后自动关闭

二、生成器(yield 关键字)

作用:延迟生成数据,节省内存,适用于处理大量数据或无限序列。

示例:生成斐波那契数列

def fibonacci():
    a, b = 0, 1
    while True:
        yield a  # 返回当前值并暂停
        a, b = b, a + b

# 使用生成器
gen = fibonacci()
for i in range(5):
    print(i)  # 输出:0, 1, 1, 2, 3

特点

  • 使用 yield 代替 return,函数变为生成器。

三、异常处理(try-except-else-finally

作用:捕获和处理运行时错误,增强程序健壮性。

语法

try:
    # 可能出错的代码
except 异常类型1 [as e]:
    # 处理异常1
except 异常类型2:
    # 处理异常2
else:
    # 若无异常执行
finally:
    # 无论是否有异常都执行

示例

try:
    result = 10 / 0  # 触发 ZeroDivisionError
except ZeroDivisionError:
    print("除数不能为零")
else:
    print(f"结果:{result}")
finally:
    print("执行完毕")

注意事项

  • finally 块常用于释放资源(如关闭文件、数据库连接)。
  • 可自定义异常类,通过 raise 主动抛出异常。

四、断言(assert 语句)

作用:在开发和调试阶段检查条件是否为真,若为假则触发 AssertionError

语法

assert 条件 [, 错误信息]

示例

def divide(a, b):
    assert b != 0, "除数不能为零"
    return a / b

divide(10, 0)  # 触发 AssertionError: 除数不能为零

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值