Python 流程控制与逻辑

🧠 Python 流程控制与逻辑 (Flow Control) 学习笔记

在 Python 中,流程控制依靠**缩进(Indentation)**来划分代码块。通常是 4 个空格。


1. 条件判断 (Conditional Statements)

根据条件的真假(True/False)来决定执行哪一段代码。

① 基础语法

python 复制代码
age = 18

if age >= 18:
    print("你已经成年了")
elif age >= 12:
    print("你是青少年")
else:
    print("你是儿童")
  • if: 必须有,判断第一个条件。
  • elif: 可选,可以有多个,表示"否则如果"。
  • else: 可选,表示以上条件都不满足时执行。

② 逻辑运算符

用于组合多个条件:

  • and: 且(两者都为真)。
  • or: 或(只要有一个为真)。
  • not: 非(取反)。
python 复制代码
score = 85
if score >= 80 and score <= 90:
    print("优秀")

2. 循环结构 (Loops)

for 循环:遍历序列

for 循环用于遍历任何序列(列表、元组、字典、字符串等)。

python 复制代码
# 遍历列表
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
    print(f"我想吃: {fruit}")

# 使用 range() 生成数字序列
# range(start, stop, step)
for i in range(1, 5):  # 输出 1, 2, 3, 4 (不含 5)
    print(i)

while 循环:条件循环

只要条件为真,就一直执行。

python 复制代码
count = 0
while count < 3:
    print(f"计数中: {count}")
    count += 1  # 记得修改条件,否则会死循环

3. 循环控制语句

有时我们需要提前结束循环或跳过某次迭代。

关键字 作用
break 彻底终止当前循环,跳出循环体。
continue 跳过本次循环剩下的代码,直接进入下一次迭代。
pass 占位符。什么都不做,只为了保持语法完整(常用于还没写好逻辑的函数)。

示例代码:

python 复制代码
for i in range(1, 6):
    if i == 3:
        continue  # 跳过 3
    if i == 5:
        break     # 看到 5 就停止整个循环
    print(i)
# 输出结果: 1, 2, 4

4. 进阶:推导式 (Comprehensions) 🚀

这是 Python 的"黑魔法",能用一行代码完成循环+创建集合的操作。

① 列表推导式 (List Comprehension)

需求:得到 1-10 中所有偶数的平方。

python 复制代码
# 普通写法
squares = []
for x in range(1, 11):
    if x % 2 == 0:
        squares.append(x**2)

# 推导式写法 (更 Pythonic)
squares = [x**2 for x in range(1, 11) if x % 2 == 0]

② 字典推导式 (Dict Comprehension)

python 复制代码
# 将两个列表合并成一个字典
keys = ['name', 'age']
values = ['Jojo', 25]
user_dict = {keys[i]: values[i] for i in range(len(keys))}
# 结果: {'name': 'Jojo', 'age': 25}

5. 常见陷阱与注意事项

  1. 忘记冒号ifforwhile 语句行末一定要加 :
  2. 缩进错误:Python 对缩进极其敏感。同一代码块的缩进必须完全一致。
  3. 死循环 :使用 while 时,确保循环条件最终会变为 False
  4. 修改迭代中的列表 :在 for 循环中直接 remove 正在遍历的列表元素会导致奇怪的错误,建议先复制一份列表或使用推导式。

💡 总结建议

  • 如果你知道要循环多少次 :优先用 for
  • 如果你只知道循环结束的条件 :用 while
  • 如果你想让代码看起来更像"高级玩家":尝试学会列表推导式。

下一篇建议: "函数的艺术" ------ 学习如何把这些逻辑封装成可复用的工具。

相关推荐
yaoxin5211232 分钟前
405. Java 文件操作基础 - 装饰者模式与 I/O Streams
java·开发语言·python
Unbelievabletobe7 分钟前
免费外汇api的响应时间在不同时段下的波动分析
大数据·开发语言·前端·python
wang3zc8 分钟前
CSS如何实现元素镜像翻转_使用transformscalex负值
jvm·数据库·python
zyq99101_110 分钟前
递归与动态规划实战代码解析
python·算法·蓝桥杯
CLX050512 分钟前
Golang如何做图片处理缩放_Golang图片处理教程【收藏】
jvm·数据库·python
阿苟16 分钟前
数据库重点难点
redis·后端·mysql
2301_8125396719 分钟前
mysql如何限制用户连接数_使用MAX_USER_CONNECTIONS优化并发
jvm·数据库·python
momom27 分钟前
分布式缓存集群高可用架构与一致性哈希优化实践
分布式·后端·架构
X566128 分钟前
Python Django怎么处理404_关闭DEBUG模式并自定义配置全局404与500友好错误重定向页面
jvm·数据库·python
m0_7485548130 分钟前
golang如何集成Etcd配置中心_golang Etcd配置中心集成方法
jvm·数据库·python