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

Python全栈修炼之路 | 第6篇:条件判断与循环控制

作者:还怪好嘞
发布时间:2026-05-25
难度:⭐⭐⭐
阅读时长:约30分钟


前言

程序的核心能力在于决策重复。条件判断让程序能够根据不同情况做出不同选择,循环控制则让程序能够高效地处理重复性任务。本文将深入讲解Python中的条件判断与循环控制机制,从基础语法到底层原理,助你写出更优雅、更高效的代码。


一、条件判断:程序的智能决策

1.1 if/elif/else 基础语法

Python的条件判断语法简洁直观,使用缩进来表示代码块。

# 基础条件判断score=85ifscore>=90:grade='A'elifscore>=80:grade='B'elifscore>=70:grade='C'elifscore>=60:grade='D'else:grade='F'print(f"成绩等级:{grade}")# 输出: 成绩等级: B

关键要点:

  • elif是 “else if” 的缩写,可以有多个
  • 条件判断从上到下执行,第一个为True的条件会被执行,其余被跳过
  • 使用4个空格缩进(PEP 8规范)

1.2 条件表达式(三元运算符)

Python支持简洁的条件表达式:

# 传统写法ifage>=18:status="成年人"else:status="未成年人"# 条件表达式(更简洁)status="成年人"ifage>=18else"未成年人"# 嵌套条件表达式(谨慎使用,可读性降低)result="优秀"ifscore>=90else"良好"ifscore>=80else"及格"ifscore>=60else"不及格"

1.3 match-case 模式匹配(Python 3.10+)

Python 3.10引入了match-case语句,提供更强大的模式匹配能力:

defhandle_command(command):matchcommand:case"start":return"启动系统"case"stop":return"停止系统"case"restart":return"重启系统"case_:returnf"未知命令:{command}"# 带数据提取的模式匹配defanalyze_point(point):matchpoint:case(0,0):return"原点"case(x,0):returnf"x轴上的点,x={x}"case(0,y):returnf"y轴上的点,y={y}"case(x,y):returnf"普通点,坐标({x},{y})"case_:return"不是有效的点"print(analyze_point((3,0)))# 输出: x轴上的点,x=3

match-case vs if-elif 对比:

特性if-elifmatch-case
版本要求所有Python版本Python 3.10+
适用场景复杂条件判断数据结构匹配
可读性条件复杂时较差模式清晰时更好
性能逐个条件判断内部优化,通常更快

二、布尔值的本质

2.1 真值测试规则

在Python中,以下值被视为False

  • None
  • False
  • 数值零:0,0.0,0j
  • 空序列:'',[],(),{},set(),range(0)

其余所有值都被视为True

# 真值测试示例values=[0,1,"","hello",[],[1,2],None,True]forvinvalues:ifv:print(f"{v!r}是真值")else:print(f"{v!r}是假值")

2.2 短路求值

Python的andor运算符使用短路求值

# and: 第一个为False就返回第一个值,否则返回第二个值result1=0and100# 结果: 0result2=50and100# 结果: 100# or: 第一个为True就返回第一个值,否则返回第二个值result3=0or100# 结果: 100result4=50or100# 结果: 50# 实用技巧:设置默认值name=user_inputor"匿名用户"

三、循环控制:重复的艺术

3.1 for 循环

Python的for循环用于遍历可迭代对象:

# 遍历列表fruits=["苹果","香蕉","橙子"]forfruit
http://www.rkmt.cn/news/1396554.html

相关文章:

  • 2026年国内五大特色营销服务机构深度对比 - GEO优化
  • 数智营销服务商能力评估参考:四个维度看汇成广告的落地效果 - 资讯速览
  • 食品标签“文字游戏”何时休?——透视“名不副实”背后的标准与监管困局
  • 17_预处理条件编译与多文件编程
  • 16_作用域存储类别与typedef
  • 4.3万Star,一文搞懂AI时代的Agent框架核心
  • 2026年国产插入式超声波流量计品牌推荐:技术演进、市场格局与十大品牌深度测评 - 仪表品牌排行榜
  • 5分钟掌握BetterNCM安装器:让你的网易云音乐变身全能播放器
  • 如何让老Mac重获新生:OpenCore Legacy Patcher终极教程
  • 21.8k stars!告别“读代码读到怀疑人生“:这个开源工具让任何代码库秒变可视化知识图谱!
  • 一文读懂 Agent Skills:AI 智能体的 “超级技能包”
  • 为什么你的Three.js场景又平又假、塑料感拉满?90%前端都踩的灯光大坑!
  • 3步完成BetterNCM插件管理器安装:彻底改造网易云音乐体验的智能解决方案
  • 告别生硬服务,码道 + MaaS 实现物业智能助手
  • AI时代,架构师的生存法则:从技术专家到价值设计师
  • 2026年国产外夹式超声波流量计十大品牌深度测评:技术实力、行业应用与选型指南 - 仪表品牌排行榜
  • 行业首创!把AI塞进停车+充电系统,我们做了别人不敢碰的「停充一体化业务闭环」停充AI智能体
  • 昇腾NPU多机通信实战:从AllReduce到AlltoAll
  • 易语言选择框批量操作:从单选互斥到一键全选/取消的实战解析
  • 去中心化Agent网络性能瓶颈大起底:TPS突破8,400的共识层改造方案(附可复现压测数据集)
  • Unabyss 新手入门与实战部署指南
  • OpenHuman霸榜GitHub
  • 告别盲调!深入理解MCAL ICU模块的‘Active Time’与信号边沿捕获机制
  • CANN NPU 显存优化全攻略:从内存池分配到显存碎片整理的实战技巧
  • AI视频生成:为什么它正在改变创作方式?
  • 02、双指针删除元素
  • 基于Transformer的头部姿态估计:关系感知学习突破遮挡与极端角度挑战
  • Sora 2正式版发布首周深度逆向:Transformer时序建模新范式、世界模型耦合机制与3个尚未修复的生成漏洞(内测工程师内部备忘录)
  • WarcraftHelper 终极指南:3分钟解决魔兽争霸3卡顿、宽屏、FPS限制等常见问题
  • Agent开发面经