Python 基础语法(二):流程控制语句详解

🐍 Python 基础语法(二):流程控制语句详解

前言

上一篇我们学习了 Python 中的常量、变量、类型及运算符等基础语法,本篇将聚焦流程控制语句------包括顺序语句、条件语句和循环语句,这些是实现程序逻辑跳转和重复执行的核心工具,能让你的代码从简单的计算升级为具有复杂逻辑的程序。

一、顺序语句

程序默认的执行方式是从上到下依次执行,这种按顺序执行的代码称为顺序语句。

python 复制代码
print("1")
print("2")
print("3")

执行结果一定是 1 2 3,不会出现乱序。就像日常生活中"上学→工作→结婚"的顺序一样,程序的步骤顺序对结果至关重要。

二、条件语句(分支语句)

条件语句用于实现"如果...否则..."的逻辑判断,让程序根据不同条件执行不同分支。

2.1 基本语法

Python 使用 ifelifelse 关键字实现条件判断,语法特点:

  • 条件表达式后无括号,以 : 结尾
  • 语句块通过缩进 (4个空格或1个Tab)区分,而非 {}
  • 多分支用 elif(else if 的缩写)
类型 语法格式 说明
单分支 if 条件: 语句块 条件为 True 时执行语句块
双分支 if 条件: 语句块1 else: 语句块2 条件为 True 执行语句块1,否则执行语句块2
多分支 if 条件1: 语句块1 elif 条件2: 语句块2 else: 语句块3 依次判断条件,执行首个成立的分支;都不成立则执行 else

2.2 示例代码

python 复制代码
# 示例1:判断输入的选择
choice = input("输入1表示认真学习,输入2表示躺平摆烂:")
if choice == "1":
    print("你会找到好工作!")
elif choice == "2":
    print("你可能毕业就失业了!")
else:
    print("输入有误!")

# 示例2:判断奇偶数
num = int(input("请输入一个整数:"))
if num % 2 == 0:
    print("偶数")
else:
    print("奇数")

# 示例3:判断闰年(能被4整除且不能被100整除,或能被400整除)
year = int(input("请输入年份:"))
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    print("闰年")
else:
    print("平年")

2.3 缩进与代码块

  • 代码块 :一组需要一起执行的语句(如 if 条件成立后执行的所有语句)。
  • 缩进规则:同一代码块缩进量必须一致,否则会报错。
python 复制代码
# 代码1:print("world") 属于 if 代码块
a = input("请输入1:")
if a == "1":
    print("hello")
    print("world")  # 有缩进,条件成立才执行

# 代码2:print("world") 不属于 if 代码块
a = input("请输入1:")
if a == "1":
    print("hello")
print("world")  # 无缩进,无论条件是否成立都执行

2.4 空语句 pass

当条件分支暂时不需要执行任何操作时,用 pass 占位(保持语法完整):

python 复制代码
a = int(input("请输入整数:"))
if a != 1:
    pass  # 什么都不做,仅占位
else:
    print("输入的是1")

三、循环语句

循环用于重复执行某段代码,Python 提供 whilefor 两种循环。

3.1 while 循环

语法

python 复制代码
while 条件:
    循环体  # 条件为 True 时重复执行

示例

python 复制代码
# 示例1:打印1-10
num = 1
while num <= 10:
    print(num)
    num += 1  # 记得更新循环变量,避免死循环

# 示例2:计算1-100的和
total = 0
num = 1
while num <= 100:
    total += num
    num += 1
print("1-100的和为:", total)  # 输出 5050

# 示例3:嵌套循环(计算1!+2!+...+5!)
sum_factorial = 0
num = 1
while num <= 5:
    factorial = 1  # 计算当前num的阶乘
    i = 1
    while i <= num:
        factorial *= i
        i += 1
    sum_factorial += factorial
    num += 1
print("阶乘和为:", sum_factorial)  # 输出 153

3.2 for 循环

for 循环用于遍历"可迭代对象"(如范围、列表等),语法更简洁:

python 复制代码
for 循环变量 in 可迭代对象:
    循环体

常用场景

  • 使用 range() 生成数字范围:range(开始, 结束, 步长)(左闭右开区间)
python 复制代码
# 示例1:打印1-10
for i in range(1, 11):  # 范围 [1, 11),即1-10
    print(i)

# 示例2:打印2,4,6,8,10(步长为2)
for i in range(2, 11, 2):
    print(i)

# 示例3:倒序打印10-1(步长为-1)
for i in range(10, 0, -1):
    print(i)

3.3 循环控制:breakcontinue

  • continue:跳过当前循环的剩余部分,直接进入下一次循环。
  • break:立即终止整个循环,跳出循环体。
python 复制代码
# 示例1:continue(跳过第3个包子)
print("===== 吃包子(遇到虫跳过) =====")
for i in range(1, 6):
    if i == 3:
        print("第3个包子有虫,跳过!")
        continue
    print(f"吃完第{i}个包子")

# 示例2:break(吃到有虫的包子就停止)
print("\n===== 吃包子(遇到虫停止) =====")
for i in range(1, 6):
    if i == 3:
        print("第3个包子有虫,不吃了!")
        break
    print(f"吃完第{i}个包子")

运行结果

复制代码
===== 吃包子(遇到虫跳过) =====
吃完第1个包子
吃完第2个包子
第3个包子有虫,跳过!
吃完第4个包子
吃完第5个包子

===== 吃包子(遇到虫停止) =====
吃完第1个包子
吃完第2个包子
第3个包子有虫,不吃了!

四、综合案例:人生重开模拟器(简化版)

实现一个简单的文字游戏,包含属性设置、性别随机、出生点判定和幼年事件模拟。

python 复制代码
import random
import time
import sys

# 游戏开场
print("花有重开日,人无再少年")
print("欢迎来到:人生重开模拟器")

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

    # 验证属性合法性
    if not (1 <= face <= 10):
        print("颜值必须在1-10之间!")
        continue
    if not (1 <= strong <= 10):
        print("体质必须在1-10之间!")
        continue
    if not (1 <= iq <= 10):
        print("智力必须在1-10之间!")
        continue
    if not (1 <= home <= 10):
        print("家境必须在1-10之间!")
        continue
    if face + strong + iq + home > 20:
        print("总点数超过20,请重新分配!")
        continue
    break  # 所有属性合法,退出循环
print("初始属性设定完成!")

# 2. 随机性别(掷骰子,单数为男,双数为女)
gender_point = random.randint(1, 6)
gender = "boy" if gender_point % 2 == 1 else "girl"
print(f"\n你是个{'男孩' if gender == 'boy' else '女孩'}")

# 3. 根据家境设定出生点
birth_point = random.randint(1, 3)
if home == 10:
    print("你出生在帝都,父母是高官政要")
    home += 1
    iq += 1
    face += 1
elif 7 <= home <= 9:
    if birth_point == 1:
        print("你出生在大城市,父母是公务员")
        face += 2
    elif birth_point == 2:
        print("你出生在大城市,父母是企业高管")
        home += 2
    else:
        print("你出生在大城市,父母是大学教授")
        iq += 2
# 省略部分家境分支...

# 4. 模拟1-10岁幼年事件
print("\n===== 幼年阶段(1-10岁) =====")
for age in range(1, 11):
    info = f"你今年{age}岁,"
    event_point = random.randint(1, 3)

    # 触发事件(根据性别、体质、颜值等属性)
    if gender == "girl" and home <= 3 and event_point == 1:
        info += "家里重男轻女,你被遗弃了..."
        print(info)
        print("游戏结束!")
        sys.exit(0)  # 结束程序
    elif strong < 6 and event_point != 3:
        info += "生了一场病,"
        if home >= 5:
            info += "父母精心照料,身体好转"
            strong += 1
            home -= 1
        else:
            info += "父母无暇照顾,身体变差"
            strong -= 1
    # 省略其他事件逻辑...
    else:
        info += "健康成长,"
        if event_point == 1:
            info += "更聪明了"
            iq += 1
        elif event_point == 2:
            info += "更好看了"
            face += 1
        else:
            info += "更结实了"
            strong += 1

    print(info)
    print(f"当前属性:体质={strong},颜值={face},智力={iq},家境={home}")
    time.sleep(1)  # 暂停1秒,方便阅读

五、自测练习

  1. [单选] 以下代码的输出结果是?

    python 复制代码
    a = 5
    if a > 10:
        print("A")
    elif a > 3:
        print("B")
    else:
        print("C")

    A. A B. B C. C (答案:B)

  2. [多选] 关于 breakcontinue 的说法正确的是?

    A. break 用于终止整个循环

    B. continue 用于跳过当前循环的剩余部分

    C. 两者都能在 whilefor 循环中使用

    (答案:ABC)

  3. [编程] 用循环计算 100 以内所有能被 3 整除的数的和。

总结

本文介绍了 Python 流程控制的三大核心:顺序执行、条件分支(if/elif/else)和循环(while/for),以及循环控制语句 break/continue。这些工具是实现复杂逻辑的基础,例如游戏中的事件触发、数据处理中的批量计算等。下一章节将学习更高级的数据结构(列表、字典等),让程序能处理更复杂的数据!

相关推荐
Entropy-Lee12 分钟前
JavaScript 执行上下文与作用域
开发语言·javascript·ecmascript
赴33514 分钟前
机器学习 集成学习之随机森林
人工智能·python·随机森林·机器学习·集成学习·sklearn·垃圾邮件判断
Hello.Reader21 分钟前
Rust + WebAssembly 上线实战指南
开发语言·rust·wasm
NineData21 分钟前
NineData 新增支持 AWS ElastiCache 复制链路
数据库
Rust语言中文社区23 分钟前
Rust 训练营二期来袭: Rust + AI 智能硬件
开发语言·后端·rust
站大爷IP23 分钟前
掌握这五个Python核心知识点,编程效率翻倍!
python
Yang-Never28 分钟前
Kotlin -> object声明和object表达式
android·java·开发语言·kotlin·android studio
风萧萧199929 分钟前
Java 实现poi方式读取word文件内容
java·开发语言·word
星座52835 分钟前
最新基于Python科研数据可视化实践技术
python·信息可视化·可视化·数据可视化