Appearance
运算符与控制流
变量存了值,接下来就要做两件事:对值做计算(运算符),根据结果决定走哪条路(控制流)。这两块是写任何逻辑的基础——判断待办是否完成、循环处理一批联系人、重试一个失败的操作,都靠它们。
一、运算符
算术运算符:
python
print(10 + 3) # 13 加
print(10 - 3) # 7 减
print(10 * 3) # 30 乘
print(10 / 3) # 3.333... 除(结果永远是 float)
print(10 // 3) # 3 整除(向下取整)
print(10 % 3) # 1 取余
print(2 ** 3) # 8 幂运算(2 的 3 次方)/ 和 // 要分清:/ 是真除法,结果一定是小数(哪怕能整除,10 / 2 也是 5.0);// 是整除,直接砍掉小数部分。统计"平均每人几条"这种场景,两者结果不一样。
比较运算符,结果是布尔值:
python
age = 18
print(age >= 18) # True
print(age == 18) # True(注意是两个等号,一个等号是赋值)
print(age != 20) # True新手最容易犯的错:把 = 当成"等于"。一个 = 是赋值(age = 18),两个 == 才是判断相等(age == 18)。写成 if age = 18: 会直接报错,这反而是好事——有些语言里这种写法不报错,bug 更隐蔽。
逻辑运算符,组合多个条件:
python
count = 5
done = True
print(count > 0 and done) # True(两个都成立)
print(count > 10 or done) # True(至少一个成立)
print(not done) # False(取反)注意 Python 用英文单词 and/or/not,不是 &&/||/!——从 Shell 或 C 过来的人容易写错。
成员运算符 in,判断某个东西在不在一组里:
python
tags = ["工作", "重要", "本周"]
print("工作" in tags) # True
print("私人" not in tags) # Truein 在 Python 里用得极多——判断列表里有没有某个元素、字符串里有没有某个子串、字典里有没有某个 key,都用它。
二、条件判断
if / elif / else 处理分支:
python
priority = 2
if priority == 1:
level = "高"
elif priority == 2:
level = "中"
else:
level = "低"
print(f"优先级: {level}") # 优先级: 中Python 里这些值会被当作"假":0、空字符串 ""、空列表 []、空字典 {}、None、False。其他值都是"真"。这个规则记住,写条件判断会简洁很多:
python
title = ""
if not title:
print("标题是空的") # 会执行,因为空字符串是"假"不用写 if title == "":,直接 if not title: 更地道。
三元表达式,适合很短的二选一:
python
count = 5
status = "有任务" if count > 0 else "无任务"但条件一复杂,还是老老实实写 if。代码是给人读的,一行硬塞太多逻辑,排查时反而费劲。
三、for 循环
遍历一个列表:
python
todos = ["写周报", "回邮件", "开会"]
for todo in todos:
print(f"- {todo}")遍历字典:
python
contacts = {
"张三": "13800000001",
"李四": "13800000002",
}
for name, phone in contacts.items():
print(f"{name}: {phone}")items() 是遍历字典同时拿到 key 和 value 的标准写法——只写 for x in contacts: 拿到的是 key,经常踩坑。
带序号遍历,用 enumerate:
python
for index, todo in enumerate(todos, start=1):
print(f"{index}. {todo}")range() 生成一段数字序列,适合"重复 N 次"或按数字遍历:
python
for i in range(3): # 0, 1, 2
print(f"第 {i + 1} 次重试")
for n in range(2, 5): # 2, 3, 4
print(n)四、while 循环
while 适合"次数不固定,满足条件就一直做"的场景——重试、轮询、排队:
python
import time
retry = 0
max_retry = 3
while retry < max_retry:
print(f"第 {retry + 1} 次尝试")
retry += 1
time.sleep(1)while 循环一定要确保退出条件最终会满足。如果条件永远为真,就是死循环,程序卡住不动。最常见的原因是忘了在循环体里更新变量(比如忘了 retry += 1)。
五、break 和 continue
break 直接跳出整个循环,continue 跳过本次、继续下一次:
python
# 找到第一个已完成的待办就停
for todo in todos:
if "已完成" in todo:
print(f"找到完成的: {todo}")
break
# 跳过已完成的,只处理未完成的
for todo in todos:
if "已完成" in todo:
continue
print(f"处理: {todo}")这两个用好了能让循环逻辑简洁,用多了会让代码难读。嵌套循环里用 break 只跳出最内层,这是个容易误解的点——想一次跳出多层循环,通常得借助标志变量或者把内层循环抽成函数。