当前位置: 首页 > news >正文

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

3.2 for 循环

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

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

常用场景

  • 使用 range() 生成数字范围:range(开始, 结束, 步长)(左闭右开区间)
# 示例1:打印1-10
for i in range(1, 11):  # 范围 [1, 11),即1-10print(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个包子有虫,跳过!")continueprint(f"吃完第{i}个包子")# 示例2:break(吃到有虫的包子就停止)
print("\n===== 吃包子(遇到虫停止) =====")
for i in range(1, 6):if i == 3:print("第3个包子有虫,不吃了!")breakprint(f"吃完第{i}个包子")

运行结果

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

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

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

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之间!")continueif not (1 <= strong <= 10):print("体质必须在1-10之间!")continueif not (1 <= iq <= 10):print("智力必须在1-10之间!")continueif not (1 <= home <= 10):print("家境必须在1-10之间!")continueif face + strong + iq + home > 20:print("总点数超过20,请重新分配!")continuebreak  # 所有属性合法,退出循环
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 += 1iq += 1face += 1
elif 7 <= home <= 9:if birth_point == 1:print("你出生在大城市,父母是公务员")face += 2elif birth_point == 2:print("你出生在大城市,父母是企业高管")home += 2else: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 += 1home -= 1else:info += "父母无暇照顾,身体变差"strong -= 1# 省略其他事件逻辑...else:info += "健康成长,"if event_point == 1:info += "更聪明了"iq += 1elif event_point == 2:info += "更好看了"face += 1else:info += "更结实了"strong += 1print(info)print(f"当前属性:体质={strong},颜值={face},智力={iq},家境={home}")time.sleep(1)  # 暂停1秒,方便阅读

五、自测练习

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

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

http://www.lryc.cn/news/610824.html

相关文章:

  • 【Qt开发】常用控件(一)
  • 嵌入式硬件中运放的基本控制原理
  • 选佳沐信,智享便捷,乐在其中
  • LeetCode——2683. 相邻值的按位异或
  • 下架的软件又复活了,低调使用!
  • HFSS许可审计与分析
  • 用 Python 批量处理 Excel:从重复值清洗到数据可视化
  • Go语言实战案例:使用context控制协程取消
  • 【工程化】tree-shaking 的作用以及配置
  • 小杰数据结构——题库——拂衣便欲沧海去,但许明月随吾身
  • EP02:【DL 第二弹】张量的索引、分片、合并以及维度调整
  • WWDC 25 极地冰原撸码危机:InlineArray 与 Span 的绝地反击
  • 基于MCP的智能客服系统:知识库与工单系统深度集成
  • C++ 网络编程入门:TCP 协议下的简易计算器项目
  • 面向对象编程基础:类的实例化与对象内存模型详解
  • 什么是mysql的垂直分表,理论依据是什么,如何使用?
  • 单链表应用实践
  • 【PCIE044】基于 JFM7VX690T 的全国产化 FPGA 开发套件
  • FPGA 基本设计思想--乒乓操作、串并转换、流水线
  • 数学建模算法-day[15]
  • 【MATLAB】(八)矩阵
  • 技术与情感交织的一生 (十一)
  • HTTP 与 HTTPS 的区别深度解析:从原理到实践
  • kettle插件-kettle http post plus插件,轻松解决https post接口无法调用文件流下载问题
  • 攻击实验(ARP欺骗、MAC攻击、报文洪水攻击、DNS欺骗)
  • 在 MCP 中实现 “askhuman” 式交互:原理、实践与开源方案
  • 灰色优选模型及算法MATLAB代码
  • 信息安全概述--实验总结
  • TCP如何实现可靠传输?实现细节?
  • 三极管基本放大电路静态及动态参数计算