当前位置: 首页 > 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.xdnf.cn/news/1244971.html

相关文章:

  • HPE磁盘阵列管理01——MSA和SMU
  • 「PromptPilot 大模型智能提示词平台」—— PromptPilot × 豆包大模型 1.6:客户投诉邮件高效回复智能提示词解决方案
  • Vlog音效大升级!用Audition环境音效打造沉浸式体验
  • 【C++】Stack and Queue and Functor
  • 【原创】基于gemini-2.5-flash-preview-05-20多模态模型实现短视频的自动化二创
  • 将普通用户添加到 Docker 用户组
  • promise类方法
  • 阿里云百炼平台创建智能体-上传文档
  • Java学习第一百零六部分——Lucene
  • 2.4 组件通信
  • deepseek、GPT与claude在MATLAB编程上的准确性对比——以卡尔曼滤波调试为例
  • 大模型之后,机器人正在等待它的“GPT-1 时刻”
  • 本机部署K8S集群
  • 力扣:2246. 相邻字符不同的最长路径
  • ESP-idf框架下的HTTP服务器\HTML 485温湿度采集并长传
  • 14.Home-新鲜好物和人气推荐实现
  • 编程算法:技术创新与业务增长的核心引擎
  • Linux操作系统从入门到实战(十三)版本控制器Git基础概念讲解
  • 深入浅出 RabbitMQ-路由模式详解
  • 自由学习记录(77)
  • 24. 前端-js框架-Vue
  • vite面试题及详细答案120题(01-30)
  • 【工程化】tree-shaking 的作用以及配置
  • 研发团队看板协作中的自动化实践:集成CI/CD与任务流转
  • 【Linux系统】进程间通信:基于匿名管道实现进程池
  • linux_https,udp,tcp协议(更新中)
  • C语言基础_随机数、数组、函数、指针
  • 【机器学习深度学习】模型压缩简介
  • C++ - 基于多设计模式下的同步异步日志系统(11w字)
  • NLP——BERT模型全面解析:从基础架构到优化演进