> 技术文档 > 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 示例代码

# 示例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 条件成立后执行的所有语句)。
  • 缩进规则:同一代码块缩进量必须一致,否则会报错。
# 代码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 占位(保持语法完整):

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

三、循环语句

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

3.1 while 循环

语法

while 条件: 循环体 # 条件为 True 时重复执行

示例

# 示例1:打印1-10num = 1while num <= 10: print(num) num += 1 # 记得更新循环变量,避免死循环# 示例2:计算1-100的和total = 0num = 1while num <= 100: total += num num += 1print(\"1-100的和为:\", total) # 输出 5050# 示例3:嵌套循环(计算1!+2!+...+5!)sum_factorial = 0num = 1while num <= 5: factorial = 1 # 计算当前num的阶乘 i = 1 while i <= num: factorial *= i i += 1 sum_factorial += factorial num += 1print(\"阶乘和为:\", sum_factorial) # 输出 153

3.2 for 循环

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

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

常用场景

  • 使用 range() 生成数字范围:range(开始, 结束, 步长)(左闭右开区间)
# 示例1:打印1-10for 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:立即终止整个循环,跳出循环体。
# 示例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个包子有虫,不吃了!

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

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

import randomimport timeimport 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 += 1elif 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. [单选] 以下代码的输出结果是?

    a = 5if 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。这些工具是实现复杂逻辑的基础,例如游戏中的事件触发、数据处理中的批量计算等。下一章节将学习更高级的数据结构(列表、字典等),让程序能处理更复杂的数据!

自动售水机