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

python4(条件语句、循环语句、推导式)

条件语句、循环语句与推导式

Python 的流程控制,说白了就三件事:判断(走哪条路)、重复(干多少遍)、快速生成(批量造数据)。这就像开车——条件语句是红绿灯,循环语句是绕着环岛转圈,推导式则是自动化的流水线打包机。咱们一样一样拆。


一、条件语句:让代码学会“看人下菜碟”

1. 三种基本形态

条件语句的核心就是if,后面跟着一个“真/假”表达式,真就执行,假就跳过或者走else

  • 单分支if 条件: 做某事
  • 双分支if 条件: 做A else: 做B
  • 多分支if 条件1: ... elif 条件2: ... elif 条件3: ... else: ...

注意一个关键特性:每个条件语句只会命中第一个满足的条件,后面的elifelse就都不看了。这跟按顺序问问题一样,问到了“是”就不再往下问。

num=5ifnum>0:print("a")# 输出 aelifnum>1:print("b")# 不会执行,因为上面已经满足了

P.S.if后面的条件不一定是布尔值,Python 会自动把任何值转成布尔——0None、空字符串、空列表、空字典等都是False,其他都是True。所以if []:永远不会进,if "hello":一定会进。

2. 三元表达式:一行搞定简单判断

如果你只是根据条件给变量赋个值,写四行if-else太啰嗦,可以用三元表达式:

result="牛逼"ifscore>=90else"优秀"ifscore>=80else"可以"ifscore>=60else"同志仍需努力"

这玩意儿是表达式(有返回值),不是代码块,所以可以嵌在 f-string 里:

print(f"老师说我:{'牛逼'ifscore>=90else'优秀'ifscore>=80else'可以'ifscore>=60else'同志仍需努力'}")

不过实话实说,嵌套多了可读性会下降,适可而止。

3. 嵌套与“奇葩”写法

条件语句可以套娃——if里面再写if。PDF 里那个“包租婆”的例子就是典型的嵌套判断。

另外,Python 还支持一种“连环三元”的写法(PDF 里有一长串),但那个纯粹是炫技,生产环境千万别这么写,维护的人会想打你。


二、循环语句:让代码学会“重复劳动”

循环分两种:whilefor,一个靠条件,一个靠遍历。

1.while:条件型循环

只要条件为真,就一直执行。最常见的是while True死循环,配合break手动退出。

count=0whileTrue:print(count)count+=1ifcount>=5:break

while...else的坑else会在循环正常结束(没有被break)时执行。如果循环被break打断,else就不执行。这一点容易忘,但用好了可以省一个标志变量。

2.for:遍历型循环

for可以遍历任何可迭代对象(字符串、列表、元组、字典、集合、range 等)。

foriin"abc":print(i)# a b cforkeyin{"one":1,"two":2}:# 遍历的是键print(key)

for...else的逻辑和while...else一样——正常走完才执行else,被break则跳过。

3. 循环控制:breakcontinue

  • break终止整个循环(只影响它所在的那一层,外层不受影响)。
  • continue跳过本次,直接进入下一次迭代。
foriinrange(3):forjinrange(3):print("hello")break# 只跳出内层循环,所以外层循环3次,输出3个hello

4. 两个实用内置工具:rangeenumerate

  • range(start, stop, step)生成一个不可变的整数序列,不占内存(只存三个参数),适合循环计数。
  • enumerate(iterable, start=0)在遍历时同时拿到索引和值,返回一个个元组。
foridx,valinenumerate(["a","b","c"],start=1):print(idx,val)# 1 a, 2 b, 3 c

三、推导式:一行代码搞定批量生成

推导式是 Python 特有的“语法糖”,能把好几行的for循环压缩成一行,而且速度更快(底层优化过)。

1. 列表推导式 —— 最常用

基本结构:[表达式 for 变量 in 可迭代对象 if 条件]

squares=[x**2forxinrange(10)]# [0,1,4,9,...81]even_squares=[x**2forxinrange(10)ifx%2==0]

还可以两层循环(相当于嵌套for):

result=[(x,y)forxin[1,2,3]foryin[3,1,4]ifx!=y]

初始表达式甚至可以又是一个列表推导式,比如转置矩阵——那个有点烧脑,但看懂了会觉得很优雅。

2. 字典推导式 和 集合推导式

把方括号换成花括号,写法一样。

dic={x:x**2forxinrange(4)}# {0:0, 1:1, 2:4, 3:9}set1={x**2forxinrange(4)}# {0,1,4,9}(集合自动去重)

集合推导式天然去重,很适合做过滤。


四、综合实战

大家可以动手敲一敲下面的这道例题,试着做一下:

  • random.randint(0,2)生成电脑出拳。
  • 用字典映射数字到“石头/剪刀/布”。
  • 判断输赢的逻辑:player - computer等于-12时玩家赢(因为 0石头、1剪刀、2布 是一个循环相克的关系)。
  • 加了输入校验(while循环保证输入在 0~2 之间)。
  • 三局两胜制,用for循环跑三局,统计双方胜局数。
  • 最后询问是否继续,用while确保输入只有qc

这个例子把条件、循环、推导式(虽然没显式用)都串起来了,是很好的练手项目。


五、补充几个边角料

  • random模块:除了randint,还有random()(0~1浮点)、choice(随机选一个)、sample(随机选多个不重复)、shuffle(打乱顺序)、seed(固定随机种子,方便复现)。
  • pass占位符:什么也不做,只用来占位置,比如写个空函数或空循环体,等以后补代码。
  • chrord:字符和 Unicode 码位互转,PDF 里用在判断输入是否为大写Q或小写q上。

收尾

条件语句、循环语句、推导式这三块,是 Python 里最基础的“动词”——你写的每一段代码都离不开它们。别死记语法,多敲几遍石头剪刀布,把ifwhileforbreakcontinue的手感练出来,后面学函数、类、装饰器就顺了。

如果非要说个优先级:iffor是基本功,列表推导式是进阶亮点。先把前者玩透,后者自然水到渠成。

下图为本文知识点的思维导图(示意):


有任何疑问,随时来聊。编码愉快!

http://www.jsqmd.com/news/1246990/

相关文章:

  • NET7的Min和Max方法性能暴增了45倍?
  • 华师大版八年级数学新教材同步学习资源解析:视频讲解与单元测试
  • 雅可比猜想反例构造:法布尔如何用多项式映射破解数学难题
  • AI 在营销前端中的应用:智能落地页生成与 A/B 测试自动化
  • TensorFlow Object Detection API
  • 2026哈尔滨品牌首饰回收新趋势:8区80门店实力覆盖,专业鉴定护航大牌珠宝流通 - 肉松卷
  • 小天鹅TB12U21波轮洗衣机深度评测:DD直驱变频技术解析
  • 测试文章 001119 - 请忽略
  • Prompt设计:大模型时代的核心编程技能
  • 证件伪造检测技术:从图像识别到多模态安全验证的实战解析
  • 硅小冠四大系统:全方位解决中小企业营销痛点的AI自动化方案 - 热点速览
  • 艺术涂料行业技术难点与芬罗艺术涂料的实践方案
  • 为什么 K8s 在阿里能成功?| 问底中国 IT 技术演进
  • 图解 | 原来这就是网络
  • 2026年真石漆公司怎么选?实用选购参考指南必看!
  • Agent技术如何重塑企业智能营销新范式
  • Etcd单机多实例部署与配置指南
  • 稳定日收益200+,一台设备全天运行的最省心项目推荐
  • 从赛道自动驾驶搞起,小米准备怎么开发L3?
  • 2026 深圳福田黄金首饰回收测评:正规商户资质梳理 - 生活时报
  • 全栈独立产品 CI/CD 复盘:从手动部署到自动化流水线
  • IDA Pro逆向工程实战:定位与修复IDM文件损坏误报弹窗
  • YOLOv10在工业气体泄漏检测中的AI应用实践
  • 在 .NET MAUI 里接入 PP-OCRv6 文本检测实现查找并点击
  • JavaCPP实战指南:解决JNI替代方案中的编译、内存与部署难题
  • 功效保湿面霜选购攻略,价格透明实力测评不踩坑 - myqiye
  • 郎溪县哪里有能上学籍的武校?泗县虹坤文武学校2026面向郎溪县招生 - 圣龙武术朱老师
  • OpenSplat二次开发实战:C++扩展与API封装指南
  • NE2-S1W以太网模组TCP透传配置与工业物联网应用实战
  • agent-MCP-A2A-ANP销售售后项目