# ===== 条件判断 =====
score = 85
# 基础 if/elif/else
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >= 70:
grade = "C"
else:
grade = "D"
print(f"成绩: {grade}") # 成绩: B
# 三元表达式(Python 的写法和 JS 不同!)
# JS: const msg = age >= 18 ? "成年" : "未成年"
# Python:
age = 20
msg = "成年" if age >= 18 else "未成年"
print(msg) # 成年
# 逻辑运算符(用英文单词!不是 && || !)
is_admin = True
is_active = True
if is_admin and is_active:
print("有权限")
has_permission = not is_admin or is_active # True
# 链式比较(Python 独有,非常优雅!)
x = 15
if 10 <= x <= 20:
print("x 在 10 到 20 之间") # JS 需要 x >= 10 && x <= 20
# 真值判断(Python 的 falsy 值)
# False, 0, 0.0, "", [], {}, set(), None 都是 falsy
if not []:
print("空列表是 falsy")
🔁 for 循环(Python 最强大的循环)
# ===== 遍历列表 =====
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
# ===== range() 生成数字序列 =====
for i in range(5): # 0,1,2,3,4
print(i)
for i in range(1, 6): # 1,2,3,4,5(左闭右开)
print(i)
for i in range(0, 10, 2): # 0,2,4,6,8(步长为2)
print(i)
# ===== enumerate():同时获取索引和值(最常用!)=====
# JS: fruits.forEach((fruit, index) => ...)
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")
# 0: apple
# 1: banana
# 2: cherry
# ===== zip():同时遍历多个列表 =====
names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
for name, age in zip(names, ages):
print(f"{name} 今年 {age} 岁")
# ===== 遍历字典 =====
user = {"name": "Alice", "age": 25, "role": "admin"}
for key in user:
print(key)
for key, value in user.items():
print(f"{key}: {value}")
# ===== for-else(Python 独有!循环正常结束时执行 else)=====
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
break
else:
# 如果没有 break,说明是质数
print(f"{n} 是质数")
🔄 while 循环
# while 循环
count = 0
while count < 5:
print(count)
count += 1 # Python 没有 ++ 运算符!
# break 和 continue
for i in range(10):
if i == 3:
continue # 跳过 3
if i == 7:
break # 到 7 停止
print(i) # 0, 1, 2, 4, 5, 6
🎯 match-case(Python 3.10+,类似 switch)
# match-case 比 switch 更强大,支持模式匹配
status = 404
match status:
case 200:
print("OK")
case 301 | 302: # 多个值匹配
print("重定向")
case 404:
print("未找到")
case 500:
print("服务器错误")
case _: # 默认分支(类似 default)
print(f"其他状态: {status}")
# 解构匹配(match 最强大的功能!)
point = (3, 4)
match point:
case (0, 0):
print("原点")
case (x, 0):
print(f"x轴上: {x}")
case (0, y):
print(f"y轴上: {y}")
case (x, y):
print(f"坐标: ({x}, {y})") # 坐标: (3, 4)
# ===== 列表推导式(List Comprehension)=====
# 基础语法:[表达式 for 变量 in 可迭代对象]
numbers = [1, 2, 3, 4, 5]
squares = [n ** 2 for n in numbers] # [1, 4, 9, 16, 25]
doubled = [n * 2 for n in numbers] # [2, 4, 6, 8, 10]
# 带条件过滤:[表达式 for 变量 in 可迭代对象 if 条件]
evens = [n for n in numbers if n % 2 == 0] # [2, 4]
big = [n for n in numbers if n > 3] # [4, 5]
# 带条件表达式(类似 JS 三元)
labels = ["偶" if n % 2 == 0 else "奇" for n in numbers]
# ["奇", "偶", "奇", "偶", "奇"]
# 字符串操作
names = ["alice", "bob", "charlie"]
upper_names = [name.upper() for name in names] # ["ALICE", "BOB", "CHARLIE"]
long_names = [name for name in names if len(name) > 3] # ["alice", "charlie"]
# 嵌套循环推导式
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flat = [x for row in matrix for x in row] # [1,2,3,4,5,6,7,8,9]
# 等价于:
# for row in matrix:
# for x in row:
# flat.append(x)
📖 字典推导式和集合推导式
# ===== 字典推导式 =====
names = ["alice", "bob", "charlie"]
name_lengths = {name: len(name) for name in names}
# {"alice": 5, "bob": 3, "charlie": 7}
# 反转字典
original = {"a": 1, "b": 2, "c": 3}
reversed_dict = {v: k for k, v in original.items()}
# {1: "a", 2: "b", 3: "c"}
# 过滤字典
scores = {"Alice": 95, "Bob": 60, "Charlie": 85}
passed = {name: score for name, score in scores.items() if score >= 70}
# {"Alice": 95, "Charlie": 85}
# ===== 集合推导式 =====
words = ["hello", "world", "hello", "python"]
unique_lengths = {len(w) for w in words} # {5, 6}
⚡ 生成器表达式
# ===== 生成器表达式 vs 列表推导式 =====
# 列表推导式 [] —— 立即计算,全部存入内存
squares_list = [n ** 2 for n in range(1000000)] # 占大量内存
# 生成器表达式 () —— 惰性计算,只在需要时计算下一个值
squares_gen = (n ** 2 for n in range(1000000)) # 几乎不占内存
# 生成器只能遍历一次
for val in squares_gen:
if val > 100:
break
# 常见用法:配合 sum/max/min/any/all 使用
total = sum(n ** 2 for n in range(100)) # 不需要额外的括号
biggest = max(len(name) for name in names)
has_admin = any(u["role"] == "admin" for u in users)