一、条件分支

1.1 if-elif-else

Python 没有 switch,用 if-elif-else 处理所有分支逻辑:

1
2
3
4
5
6
7
8
9
10
11
12
13
score = 85

if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")

# 三目表达式(条件表达式)
status = "及格" if score >= 60 else "不及格"

1.2 match-case(Python 3.10+)

Python 3.10 引入了 match-case,类似 Java 的 switch 表达式,但更强大:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
day = 3

match day:
case 1:
print("星期一")
case 2:
print("星期二")
case 3 | 4 | 5: # 多个值匹配
print("工作日")
case _: # 默认匹配(相当于 default)
print("周末")

# 匹配复杂结构
point = (0, 5)
match point:
case (0, 0):
print("原点")
case (0, y):
print(f"Y 轴上,y = {y}")
case (x, 0):
print(f"X 轴上,x = {x}")
case (x, y):
print(f"坐标 ({x}, {y})")

二、循环结构

2.1 for 循环

Python 的 for 直接遍历可迭代对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 遍历列表
fruits = ["apple", "banana", "orange"]
for fruit in fruits:
print(fruit)

# 遍历字符串
for ch in "Python":
print(ch)

# 用 range() 生成数字序列
for i in range(5): # 0, 1, 2, 3, 4
print(i)

for i in range(2, 6): # 2, 3, 4, 5(从 2 开始,到 6 之前结束)
print(i)

for i in range(0, 10, 3): # 0, 3, 6, 9(步长为 3)
print(i)

2.2 enumerate:同时获取索引和值

1
2
3
4
5
6
7
names = ["Alice", "Bob", "Charlie"]
for i, name in enumerate(names):
print(f"{i}: {name}")
# 输出:
# 0: Alice
# 1: Bob
# 2: Charlie

2.3 zip:并行遍历

1
2
3
4
5
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 22]

for name, age in zip(names, ages):
print(f"{name} 今年 {age} 岁")

2.4 while 循环

1
2
3
4
5
6
7
8
9
10
11
count = 0
while count < 5:
print(f"count: {count}")
count += 1

# while True + break 模式(常用)
while True:
user_input = input("输入 'quit' 退出: ")
if user_input == "quit":
break
print(f"你输入了: {user_input}")

2.5 break 与 continue

1
2
3
4
5
6
7
8
9
for i in range(10):
if i == 5:
break # 跳出整个循环
print(i, end=" ") # 输出: 0 1 2 3 4

for i in range(10):
if i % 2 == 0:
continue # 跳过偶数
print(i, end=" ") # 输出: 1 3 5 7 9

2.6 for-else / while-else

else 块在循环正常结束时执行(没有被 break 打断时):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
for i in range(5):
print(i)
else:
print("循环正常结束")

# 实际应用:查找元素
data = [1, 3, 5, 7]
target = 4

for num in data:
if num == target:
print("找到了")
break
else:
print(f"{target} 不在列表中") # 没找到时执行这个

三、列表推导式(List Comprehension)

这是 Python 最具特色的语法之一,用一行代码生成列表:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 普通方式
squares = []
for i in range(10):
squares.append(i ** 2)

# 推导式
squares = [i ** 2 for i in range(10)]
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# 带条件过滤
evens = [i for i in range(20) if i % 2 == 0]
# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

# 带转换
names = ["alice", "bob", "charlie"]
upper = [n.upper() for n in names]
# ['ALICE', 'BOB', 'CHARLIE']

# 嵌套
pairs = [(x, y) for x in range(3) for y in range(2)]
# [(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1)]

四、综合示例

打印九九乘法表

1
2
3
4
for i in range(1, 10):
for j in range(1, i + 1):
print(f"{j}×{i}={i*j:<2}", end=" ")
print()

判断素数

1
2
3
4
5
6
7
8
9
10
11
def is_prime(n: int) -> bool:
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True

primes = [n for n in range(1, 100) if is_prime(n)]
print(primes)
# [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

本系列导航

  • (一)变量与数据类型
  • (二)流程控制 ← 当前
  • (三)函数与面向对象