从零到接单 03:条件判断与循环——让程序学会「做决定」

pythontutorialbeginner自动化爬虫接单条件判断循环

系列目录:本文是「从零到接单:Python 自动化与爬虫实战」系列的第 3 篇。上一篇我们学习了变量和基本运算,程序已经能"记住数据"和"做计算"。这篇我们让程序学会"做判断"和"重复干活"——这可是自动化脚本的灵魂。


前面的程序只能按顺序一行行执行,但真正有用的程序需要:

  • 条件判断:遇到不同情况做不同的事("如果金额大于 1000,打 9 折")
  • 循环:重复做同一件事("遍历 100 个文件,每个都改名")

这篇学完,你就可以写出有"智能"的程序了。


一、条件判断:if 语句

基本语法

if 条件:
    条件成立时执行的代码(注意缩进!)

Python 用 缩进(通常是 4 个空格)来表示代码块,不是用大括号 {}

# 最简单的 if
score = 85

if score >= 60:
    print("及格了!")
    print("恭喜你!")   # 同一缩进级别都属于 if 代码块

print("程序结束")        # 这一行不在 if 里,无论如何都会执行

输出:

及格了!
恭喜你!
程序结束

如果把 score 改成 50:

程序结束

只有最后一行输出,因为 score >= 60 不成立。

if-else:二选一

score = 55

if score >= 60:
    print("及格")
else:
    print("不及格")
    print("加油复习!")

if-elif-else:多分支

score = 85

if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
elif score >= 60:
    grade = "D"
else:
    grade = "F"

print(f"你的成绩等级是:{grade}")  # 你的成绩等级是:B

💡 注意elif 是 "else if" 的缩写。程序从上到下检查条件,第一个成立的分支就执行,后面的都不看。所以顺序很重要!

嵌套 if

age = 20
has_ticket = True

if age >= 18:
    if has_ticket:
        print("请进,祝您观影愉快!")
    else:
        print("请先购票")
else:
    print("未成年人需要家长陪同")

条件表达式(三元运算符)

# 一行搞定简单的 if-else
age = 20
status = "成年" if age >= 18 else "未成年"
print(status)  # 成年

二、比较与逻辑运算符回顾

条件判断里最常用的运算符:

# 比较运算符
x == y    # 等于(两个等号!)
x != y    # 不等于
x > y     # 大于
x < y     # 小于
x >= y    # 大于等于
x <= y    # 小于等于

# 逻辑运算符
and       # 且 —— 两边都为真才真
or        # 或 —— 一边为真就真
not       # 非 —— 取反

# 成员运算符
in        # 在…里面
not in    # 不在…里面

实例:

# 判断闰年
year = 2024
if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    print(f"{year} 是闰年")  # 2024 是闰年

# in 运算符
fruits = ["苹果", "香蕉", "橘子"]
print("苹果" in fruits)       # True
print("西瓜" not in fruits)   # True

三、for 循环:遍历序列

for 循环用来逐个处理一组数据里的每个元素

遍历列表

fruits = ["苹果", "香蕉", "橘子", "葡萄"]

for fruit in fruits:
    print(f"我喜欢吃{fruit}")

输出:

我喜欢吃苹果
我喜欢吃香蕉
我喜欢吃橘子
我喜欢吃葡萄

range():生成数字序列

# range(n) → 0, 1, 2, ..., n-1
for i in range(5):
    print(i, end=" ")  # 0 1 2 3 4

# range(start, end) → start 到 end-1
for i in range(1, 6):
    print(i, end=" ")  # 1 2 3 4 5

# range(start, end, step) → 带步长
for i in range(0, 10, 2):
    print(i, end=" ")  # 0 2 4 6 8

遍历字符串

text = "Python"
for char in text:
    print(char, end="-")  # P-y-t-h-o-n-

enumerate():同时拿到索引和值

fruits = ["苹果", "香蕉", "橘子"]
for index, fruit in enumerate(fruits):
    print(f"{index}: {fruit}")

# 输出:
# 0: 苹果
# 1: 香蕉
# 2: 橘子

四、while 循环:条件为真就一直跑

# 打印 1 到 5
count = 1
while count <= 5:
    print(count)
    count += 1  # 等价于 count = count + 1

⚠️ 死循环警告

# ❌ 永远不要这样写(除非你明确想要死循环):
# while True:
#     print("停不下来了!")

while 循环最容易犯的错:忘记更新条件变量,导致死循环。

实用场景:用户输入验证

password = ""
while password != "123456":
    password = input("请输入密码:")
    if password != "123456":
        print("密码错误,请重试!")

print("登录成功!")

五、循环控制:break 和 continue

break:立即终止整个循环

# 找到第一个能被 7 整除的数就停
for i in range(1, 100):
    if i % 7 == 0:
        print(f"找到了:{i}")  # 找到了:7
        break  # 立刻跳出循环

continue:跳过本轮,继续下一轮

# 打印奇数(跳过偶数)
for i in range(1, 11):
    if i % 2 == 0:
        continue  # 跳过 print,进入下一次循环
    print(i, end=" ")  # 1 3 5 7 9

for-else / while-else:循环正常结束才执行

# 查找元素,没找到时给出提示
names = ["张三", "李四", "王五"]
target = "赵六"

for name in names:
    if name == target:
        print(f"找到了 {target}")
        break
else:
    # 注意:else 属于 for,不是 if!
    # 当循环没有被 break 中断时才执行
    print(f"没有找到 {target}")

六、实战练习

练习 1:猜数字游戏

import random

target = random.randint(1, 100)
guess_count = 0

print("=== 猜数字游戏(1-100)===")

while True:
    guess = int(input("请猜一个数字:"))
    guess_count += 1

    if guess > target:
        print("大了!")
    elif guess < target:
        print("小了!")
    else:
        print(f"恭喜!猜对了,答案是 {target},你猜了 {guess_count} 次")
        break

练习 2:打印九九乘法表

for i in range(1, 10):
    for j in range(1, i + 1):
        print(f"{j}×{i}={i*j}", end="\t")
    print()  # 换行

练习 3:FizzBuzz

# 打印 1-100,3 的倍数输出 Fizz,5 的倍数输出 Buzz,同时是 3 和 5 的倍数输出 FizzBuzz
for i in range(1, 101):
    if i % 3 == 0 and i % 5 == 0:
        print("FizzBuzz")
    elif i % 3 == 0:
        print("Fizz")
    elif i % 5 == 0:
        print("Buzz")
    else:
        print(i)

总结

| 概念 | 用途 | 关键字 | |------|------|--------| | 条件判断 | 根据不同情况执行不同代码 | if elif else | | for 循环 | 遍历序列中的每个元素 | for ... in | | while 循环 | 条件为真时重复执行 | while | | 跳出循环 | 立即终止循环 | break | | 跳过本轮 | 跳过剩余代码,开始下一轮 | continue | | range() | 生成数字序列 | range(start, end, step) |

有了条件和循环,你的程序已经有了"判断力"和"劳动力"。下一篇,我们将学习 Python 中更强大的数据容器:列表、元组、字典和集合——处理和存储数据的能力将再上一个台阶。


练习:写一个程序,让用户不断输入数字,输入 0 时结束。结束后输出所有数字的总和、平均值和最大值。

Comments

Sign in to leave a comment.