前言

在上一篇文章中,我们认识了 Python 的基础输入输出和变量。但光有这些还远远不够——程序真正的灵魂在于流程控制:它能根据不同的条件做出不同的选择(分支),也能重复执行某些操作(循环)。今天我们就来深入聊聊 Python 中的三大流程控制结构:顺序语句、条件语句和循环语句。

 一、顺序语句 —— 最朴素的执行方式

顺序语句是程序最自然的执行方式:代码从上到下,一行一行依次执行。

print("1")
print("2")
print("3")

输出结果永远是 `123`,绝不可能是 `321` 或 `132`。

这看起来很简单,但它揭示了一个重要原则:编程是一件明确无歧义的事情。安排好任务的顺序,计算机才能正确地执行。

就像人生的顺序——上学、工作、结婚、生子。一旦顺序乱了,就会很麻烦 😄

二、条件语句 —— 让程序拥有"判断力"

1. 什么是条件语句?

条件语句表达的是 **"如果……否则……"这样的语义,它构成了计算机中最基础的逻辑判定。

举个🌰:

如果 我认真敲代码:
    → 我就很容易找到工作
否则:
    → 我就容易毕业就失业

其中"我认真敲代码"称为条件。条件成立(为真)走一条路,条件不成立(为假)走另一条路。

PS:亲爱的同学们,你是选择认真敲代码,还是躺平摆烂呢?🤔

2. Python 中的三种条件语句形式

(1)`if` 语句——单分支

python

if expression:
    do_something1
    do_something2

当 `expression` 为 `True` 时,执行缩进的代码块;为 `False` 则跳过。

(2)`if-else` 语句——双分支

python

if expression:
    do_something1
else:
    do_something2

(3)`if-elif-else` 语句——多分支

python

if expression1:
    do_something1
elif expression2:
    do_something2
else:
    do_something3

 Python 条件语句的三个独特之处(和其他语言的对比):

| 特性 | Python | C/Java |
|------|--------|--------|
| 条件括号 | 不需要 `()` | 需要 `()` |
| 语句块标识 | 缩进(4个空格或1个Tab) | `{}` |
| else if写法 | `elif`(合体词) | `else if` |

示例:选择你的态度

python

choice = input("输入 1 表示认真学习, 输入 2 表示躺平摆烂: ")

if choice == "1":
    print("你会找到好工作!")
elif choice == "2":
    print("你可能毕业就失业了!")
else:
    print("你的输入有误!")

三、缩进和代码块 —— Python 的灵魂

代码块指的是一组放在一起执行的代码

在 Python 中,缩进就是代码块的标识。

 缩进决定了代码的"归属"

python
 代码1:print("world") 在 if 内部

a = input("请输入一个整数: ")
if a == "1":
    print("hello")
    print("world")   # 条件成立才执行

 代码2:print("world") 在 if 外部

a = input("请输入一个整数: ")
if a == "1":
    print("hello")
print("world")       # 无论条件如何都会执行

代码块还可以嵌套

python

a = input("请输入第一个整数: ")
b = input("请输入第二个整数: ")
if a == "1":
    if b == "2":
        print("hello")    # 两级缩进:a=="1" 且 b=="2"
    print("world")        # 一级缩进:a=="1"
print("python")           # 无缩进:始终执行
```

缩进的好处与坏处

✅ 好处:强制程序员写出清晰的缩进,提升代码可读性。C++/Java 不缩进也不会报错,但 Python 中缩进错误直接报错。

❌ 坏处:嵌套层次太多时,容易分不清语句属于哪个层级。

python

if a == 1:
    if b == 2:
        if c == 3:
            if d == 4:
                if e == 5:
                    if f == 6:
                        if g == 7:
                            print("hello")
                    print("1")
        print("2")

所以就有了 写 Python 需要自备游标卡尺 这个梗!

四、空语句 `pass` —— 占个位置

在 Python 中,有些地方语法上要求必须有语句,但逻辑上你什么都不想做,这时候就用 `pass`。

python

a = int(input("请输入一个整数:"))
if a != 1:
    pass          # 啥也不做,就是占个位
else:
    print("hello")

如果不写 `pass`,代码会直接报错——因为 `if` 后面不能没有语句体。

五、循环语句 —— 让代码学会"重复"

有些操作需要反复执行,这时候就要用到循环。

1. `while` 循环

基本语法

python

while 条件:
    循环体

条件为真,执行循环体;条件为假,结束循环

 示例①:打印 1-10

python

num = 1
while num <= 10:
    print(num)
    num += 1

示例②:计算 1-100 的和

python

sum = 0
num = 1
while num <= 100:
    sum += num
    num += 1
print(sum)  # 5050

示例③:计算 5 的阶乘

python

result = 1
n = 1
while n <= 5:
    result *= n
    n += 1
print(result)  # 120

示例④:求 1! + 2! + 3! + 4! + 5!(两重循环)

python

num = 1
sum = 0
while num <= 5:
    factorResult = 1
    i = 1
    while i <= num:
        factorResult *= i
        i += 1
    sum += factorResult
    num += 1
print(sum)  # 153

 循环里还可以套循环,这就是嵌套循环。

 2. `for` 循环

Python 的 `for` 循环和其他语言不太一样——它没有初始化语句、条件判定语句、变量更新语句,而是直接遍历可迭代对象

基本语法

python

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

可迭代对象:内部包含多个元素,能一个一个把元素取出来的特殊变量。

`range()` 函数——生成等差数列

`range(start, stop, step)` 生成 `[start, stop)` 范围内的整数序列。

| 写法 | 生成范围 | 示例 |
|------|---------|------|
| `range(1, 11)` | 1 到 10 | `[1,2,3,4,5,6,7,8,9,10]` |
| `range(2, 12, 2)` | 2,4,6,8,10 | 步长为2 |
| `range(10, 0, -1)` | 10 到 1 | 步长为负数 |

示例①:打印 1-10

python

for i in range(1, 11):
    print(i)

示例②:打印 2, 4, 6, 8, 10

python

for i in range(2, 12, 2):
    print(i)

示例③:打印 10 到 1

python

for i in range(10, 0, -1):
    print(i)

示例④:求 1-100 的和

python

sum = 0
for i in range(1, 101):
    sum += i
print(sum)  # 5050

六、`break` 和 `continue` —— 循环的"刹车"与"跳过"

1.`continue`:跳过本次循环

python
模拟吃包子,第3个包子吃出了虫子 → 跳过它

for i in range(1, 6):
    if i == 3:
        continue
    print(f"吃完第 {i} 个包子")

输出:

吃完第 1 个包子
吃完第 2 个包子
吃完第 4 个包子
吃完第 5 个包子

🐛 第3个包子有问题,skip 掉,继续吃第4个。

2.`break`:结束整个循环

python
# 模拟吃包子,第3个包子吃出了半只虫 → 不吃了

for i in range(1, 6):
    if i == 3:
        break
    print(f"吃完第 {i} 个包子")

输出:

吃完第 1 个包子
吃完第 2 个包子

🪳 半只虫太恶心了,直接不吃了!

综合示例:输入数字求平均值

python

sum = 0
count = 0
while True:
    num = input("请输入数字:")
    if num == ';':
        break        # 输入分号结束
    num = float(num)
    sum += num
    count += 1
print(sum / count)

七、综合案例:人生重开模拟器 🌟

学完了分支和循环,我们来做一个有趣的综合项目——人生重开模拟器(文字类小游戏)。

 "花有重开日,人无再少年"——在游戏里,你可以重新设定属性,开启一段不一样的人生!

完整代码

python

import random
import time
import sys

print("+---------------------------------------------------------------------+")
print("|                                                                     |")
print("|                   花有重开日, 人无再少年                               |")
print("|                                                                     |")
print("|                   欢迎来到, 人生重开模拟器                             |")
print("|                                                                     |")
print("+---------------------------------------------------------------------+")

# 设置初始属性
while True:
    print("请设定初始属性(可用总点数 20)")
    face = int(input("设定 颜值(1-10):"))
    strong = int(input("设定 体质(1-10):"))
    iq = int(input("设定 智力(1-10):"))
    home = int(input("设定 家境(1-10):"))

    if face < 1 or face > 10:
        print("颜值设置有误!")
        continue
    if strong < 1 or strong > 10:
        print("体质设置有误!")
        continue
    if iq < 1 or iq > 10:
        print("智力设置有误!")
        continue
    if home < 1 or home > 10:
        print("家境设置有误!")
        continue
    if face + strong + iq + home > 20:
        print("总点数超过了 20!")
        continue

    print("初始属性设定完成!")
    break

# 设置性别
point = random.randint(1, 6)  # 掷色子
if point % 2 == 1:
    gender = 'boy'
    print("你是个男孩")
else:
    gender = 'girl'
    print("你是个女孩")

# 设置出生点
point = random.randint(1, 3)  # 掷色子
if home == 10:
    print('你出生在帝都, 你的父母是高官政要')
    home += 1
    iq += 1
    face += 1
elif 7 <= home <= 9:
    if point == 1:
        print('你出生在大城市, 你的父母是公务员')
        face += 2
    elif point == 2:
        print('你出生在大城市, 你的父母是大企业高管')
        home += 2
    else:
        print('你出生在大城市, 你的父母是大学教授')
        iq += 2
elif 4 <= home <= 6:
    if point == 1:
        print('你出生在三线城市, 你的父母是教师')
        iq += 1
    elif point == 2:
        print('你出生在镇上, 你的父母是医生')
        strong += 1
    else:
        print("你出生在镇上, 你的父母是个体户")
        home += 1
else:
    if 1 <= point <= 2:
        print('你出生在村里, 你的父母是辛苦劳作的农民')
        strong += 1
        face -= 2
    elif 3 <= point <= 4:
        print('你出生在穷乡僻壤, 你的父母是无业游民')
        home -= 1
    else:
        print('你出生在镇上, 你父母感情不和')
        strong -= 1

# 模拟人生——幼年阶段
for age in range(1, 11):
    info = f'你今年 {age} 岁, '
    point = random.randint(1, 3)

    # 性别触发事件
    if gender == 'girl' and home <= 3 and point == 1:
        info += '你家里人重男轻女思想非常严重, 你被遗弃了!'
        print(info)
        print("游戏结束!")
        sys.exit(0)
    # 体质触发的事件
    elif strong < 6 and point != 3:
        info += '你生了一场病, '
        if home >= 5:
            info += '在父母的精心照料下恢复了健康'
            strong += 1
            home -= 1
        else:
            info += '你的父母没精力管你, 你的身体状况更糟糕了'
            strong -= 1
    # 颜值触发的事件
    elif face < 4 and age >= 7:
        info += '你因为长的太丑, 别的小朋友不喜欢你, '
        if iq > 5:
            info += '你决定用学习填充自己'
            iq += 1
        else:
            if gender == 'boy':
                info += '你和别的小朋友经常打架'
                iq -= 1
                strong += 1
            else:
                info += '你经常被别的小朋友欺负'
                strong -= 1
    # 智商触发的事件
    elif iq < 5:
        info += '你看起来傻傻的, '
        if home >= 8 and age >= 6:
            info += '你的父母给你送到更好的学校学习'
        elif 4 <= home <= 7:
            if gender == 'boy':
                info += '你的父母鼓励你多运动, 加强身体素质'
                strong += 1
            else:
                info += '你的父母鼓励你多打扮自己'
                face += 1
        else:
            info += '你的父母为此经常吵架'
            if point == 1:
                strong -= 1
            elif point == 2:
                iq -= 1
    # 健康成长
    else:
        info += '你健康成长, '
        if point == 1:
            info += '看起来更聪明了'
            iq += 1
        elif point == 2:
            info += '看起来更好看了'
            face += 1
        else:
            info += '看起来更结实了'
            strong += 1

    print('-------------------------------------------')
    print(info)
    print(f'strong={strong}, face={face}, iq={iq}, home={home}')
    time.sleep(1)

总结:

核心要点 :
顺序语句:代码从上到下依次执行 
条件语句: `if` / `if-else` / `if-elif-else` 
缩进规则: 4个空格表示代码块,Python 的灵魂 
pass语句: 占位符,保持语法正确 
while循环: 条件为真时重复执行 
for循环: 遍历可迭代对象,配合 `range()` 使用 
break: 跳出整个循环 
continue: 跳过本次循环,进入下一次 

💡 下期预告**:基础语法(3)——我们将继续深入学习 Python 的函数、列表、字典等更高级的数据结构,敬请期待!
 

更多推荐