Python 流程控制详解
Python 中的流程控制是编程的基础,它允许程序根据条件或重复执行某些代码块。主要包括条件语句(if、elif、else)和循环语句(for、while)。下面我将一步步详解它们,并通过示例说明。最后,我们通过一个“人生重开模拟器”的实战项目来综合应用这些知识。
我会使用代码示例来演示,每个示例后附带解释和预期输出。假设你有Python环境,如果你想运行这些代码,可以直接复制粘贴。
1. 条件语句(Conditional Statements)
条件语句用于根据某个条件(布尔表达式)来决定是否执行某些代码。Python 的条件语句结构简单,没有括号,但需要注意缩进(通常用4个空格)。
基本语法:
- if 语句:如果条件为真(True),执行代码块。
- elif 语句(可选):else if 的缩写,如果前面的 if 为假,但这个条件为真,则执行。
- else 语句(可选):如果所有前面的条件都为假,则执行。
示例:
age = 18
if age < 18:
print("你还是个孩子。")
elif age == 18:
print("恭喜,你成年了!")
else:
print("你已经是大人了。")
解释:
- 这里检查
age的值。 - 如果
age < 18,打印第一句。 - 如果不满足,但
age == 18,打印第二句。 - 否则,打印第三句。
- 输出:
恭喜,你成年了!(因为 age=18)。
嵌套条件:
你可以嵌套 if 语句,实现更复杂的逻辑。
示例:
score = 85
if score >= 60:
if score >= 90:
print("优秀!")
else:
print("及格,继续努力。")
else:
print("不及格,需要补考。")
解释:
- 先检查是否及格(>=60),如果是的,再检查是否优秀(>=90)。
- 输出:
及格,继续努力。(因为 85 >=60 但 <90)。
条件表达式(三元运算符):
Python 支持简洁的条件表达式,用于简单赋值。
示例:
x = 10
result = "正数" if x > 0 else "非正数"
print(result)
解释:
- 如果 x > 0,则 result = “正数”;否则 = “非正数”。
- 输出:
正数。
注意事项:
- 条件可以是任何返回布尔值的表达式,如比较运算符(==, !=, >, <, >=, <=)、逻辑运算符(and, or, not)。
- 空列表、空字符串等 falsy 值会被视为 False。
- 避免过多嵌套,保持代码可读性。
2. 循环语句(Loop Statements)
循环用于重复执行代码块。Python 有两种主要循环:for 和 while。
for 循环:
用于遍历序列(如列表、元组、字符串、范围)中的每个元素。
基本语法:
for 变量 in 可迭代对象:
# 代码块
示例(遍历列表):
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
print(fruit)
解释:
- 依次取出 fruits 中的每个元素,赋给 fruit 并打印。
- 输出:
苹果
香蕉
橙子
示例(使用 range()):
for i in range(5): # range(5) 生成 0 到 4
print(i)
解释:
- range(start, stop, step):从 start 到 stop-1,步长 step(默认1)。
- 输出:0 1 2 3 4(每行一个)。
while 循环:
当条件为真时,重复执行代码块。适合不确定循环次数的情况。
基本语法:
while 条件:
# 代码块
示例:
count = 0
while count < 3:
print("计数:", count)
count += 1 # 必须有递增,否则无限循环
解释:
- 只要 count < 3,就打印并递增 count。
- 输出:
计数: 0
计数: 1
计数: 2
循环控制语句:
- break:立即退出循环。
- continue:跳过当前迭代,继续下一次。
- else 子句(可选):循环正常结束(没有 break)时执行。
示例(break 和 continue):
for i in range(10):
if i == 3:
continue # 跳过 3
if i == 7:
break # 在 7 退出
print(i)
else:
print("循环正常结束")
解释:
- 打印 0,1,2,4,5,6(跳过3,7前退出)。
- else 不执行,因为有 break。
- 输出:0 1 2 4 5 6(每行一个)。
注意事项:
- 避免无限循环:在 while 中确保条件会变为 False。
- for 常用于已知次数,while 用于未知。
- 可以嵌套循环,如双层 for 实现矩阵遍历。
3. 人生重开模拟器实战
现在,我们结合条件和循环做一个简单项目:人生重开模拟器。这是一个文本-based 游戏,模拟人生从出生到死亡的过程。使用随机事件,通过条件判断决策,通过循环模拟人生阶段。
项目需求:
- 模拟人生阶段:童年、青少年、成年、老年。
- 每个阶段有随机事件(好/坏),影响“幸福值”和“财富值”。
- 使用循环遍历阶段,使用条件判断事件结果。
- 如果幸福值<0或财富值<0,游戏结束(“人生失败”)。
- 否则,到老年结束,显示最终分数。
我们需要导入 random 模块来生成随机数。
完整代码:
import random
# 初始化
happiness = 50 # 幸福值
wealth = 50 # 财富值
stages = ["童年", "青少年", "成年", "老年"]
print("欢迎来到人生重开模拟器!初始幸福值:50, 财富值:50")
# 循环遍历人生阶段
for stage in stages:
print(f"\n进入 {stage} 阶段...")
# 随机事件:生成 -20 到 20 的变化
event_hap = random.randint(-20, 20)
event_wea = random.randint(-20, 20)
# 条件判断事件类型
if event_hap > 0 and event_wea > 0:
print("好运!遇到贵人,幸福和财富都增加。")
elif event_hap < 0 and event_wea < 0:
print("倒霉!遭遇挫折,幸福和财富都减少。")
elif event_hap > 0:
print("开心的事!幸福增加,但财富变化不大。")
else:
print("挑战来临!财富变化,幸福受影响。")
# 更新值
happiness += event_hap
wealth += event_wea
print(f"当前幸福值: {happiness}, 财富值: {wealth}")
# 检查是否失败
if happiness < 0 or wealth < 0:
print("人生失败!游戏结束。")
break # 退出循环
else:
# 循环正常结束
total_score = happiness + wealth
print(f"\n恭喜完成人生!最终分数: {total_score}")
if total_score > 150:
print("完美人生!")
elif total_score > 100:
print("不错的人生。")
else:
print("普通的人生,继续努力。")
解释:
- 循环:for 遍历 stages 列表,模拟每个阶段。
- 条件:if-elif-else 判断事件类型,并更新值。
- 随机:使用 random.randint 生成变化。
- break:如果值<0,提前结束。
- else 子句:循环结束时计算分数,并用条件判断评价。
运行示例(输出因随机而异):
假设一次运行:
欢迎来到人生重开模拟器!初始幸福值:50, 财富值:50
进入 童年 阶段...
开心的事!幸福增加,但财富变化不大。
当前幸福值: 65, 财富值: 42
进入 青少年 阶段...
好运!遇到贵人,幸福和财富都增加。
当前幸福值: 78, 财富值: 58
进入 成年 阶段...
倒霉!遭遇挫折,幸福和财富都减少。
当前幸福值: 60, 财富值: 40
进入 老年 阶段...
挑战来临!财富变化,幸福受影响。
当前幸福值: 45, 财富值: 55
恭喜完成人生!最终分数: 100
普通的人生,继续努力。
这个项目展示了流程控制的实际应用。你可以扩展它,比如添加用户输入(input())来做选择决策,进一步使用条件和循环。
如果有疑问或想修改代码,随时问我!