上一课我们学会了用变量"记东西",用 print() 把结果打出来。但你有没有发现,到目前为止,程序都是一条直线往下走,一行接一行,从不停顿、从不拐弯。

现实里的问题哪有这么简单?

  • "如果今天是周末,就睡到自然醒;否则,就 7 点起床。"
  • "把这一堆作业,一道一道全部做完。"
  • "用户输入的密码错了,就让他重新输,直到对为止。"

这些,分别对应程序里最最重要的三件事:判断、循环、以及它们的组合。学会了它们,你的程序就从"念台词的机器"变成了"会思考的小脑瓜"。


一、比较运算:让程序学会"比大小"

要做判断,先得能"比"。Python 里的比较运算符,和你小学数学里的一模一样:

运算符含义例子结果
==等于5 == 5True
!=不等于5 != 3True
>大于5 > 3True
<小于3 < 5True
>=大于等于5 >= 5True
<=小于等于3 <= 5True

比较的结果是一个布尔值(bool):要么 True,要么 False。第 2 课我们见过它,现在它要派大用场了。

⚠️ 新手最容易踩的坑:判断"相等"要用两个等号 ==,一个等号 = 是"赋值",不是"比较"。写错程序不会报错,但会得出奇怪的结果。

二、if:让程序"做选择"

if 的读法特别直白:如果某个条件成立,做某件事。

age = 18
if age >= 18:
    print("你已经成年了")

关键点只有两个:

  1. 条件后面跟一个冒号 :
  2. 要做的事要缩进(通常空 4 格,按一下 Tab 键)

缩进是 Python 的灵魂。 别的语言用大括号 {} 表示"哪些代码属于这个 if",Python 用缩进。缩进错一个空格,程序的行为就完全变了。

🧊 冷笑话:妈妈对小明说:"下楼买两个包子。要是有馒头,就买一个。"小明只带了一个包子回来。妈妈问:"怎么只买了一个?"小明:"因为有馒头。"

🎯 梗在哪:妈妈的"就买一个"有歧义——是一个馒头还是一个包子?妈妈心里的 if:默认买两个包子,if 有馒头: → 再买一个馒头;小明心里的 ifif 有馒头: → 只买一个包子。同一个条件,宾语接错,结果就完全反了。


三、if / elif / else:三种情况都安排上

现实里往往不止"是 / 否"两种情况。比如成绩分等级:

score = 85

if score >= 90:
    print("优秀")
elif score >= 70:
    print("良好")
elif score >= 60:
    print("及格")
else:
    print("不及格")
  • if:第一个判断,必须要有。
  • elif(else if 的缩写):上面不成立,再来判断这个。可以有任意多个。
  • else上面全都不成立,走这里。最多一个,放最后。

程序从上往下,哪个条件先成立就先执行哪个,然后跳出整个 if,剩下的不再看。所以顺序很重要——>= 90 一定要写在 >= 70 前面,否则"优秀"的人会被"良好"先截胡。


四、逻辑运算:多个条件一起判

有时候判断要同时满足好几个条件,用 and / or / not 把它们连起来:

age = 25
has_ticket = True

if age >= 18 and has_ticket:
    print("可以进场")          # 两个都满足才进来

if age < 18 or not has_ticket:
    print("不能进场")          # 任一满足就进来
运算含义口诀
and两个都得真
or有一个真就行
not反过来
小心一个高频坑:age >= 18 and has_ticket 不能简写成 age >= 18 and == True,也注意别把 and 写成 &or 写成 |(那是位运算,是另一个东西)。

五、while 循环:重复到"不满足为止"

判断是"做一次选择",循环是"反复做一件事"。while 的读法:只要条件还成立,一直做。

count = 1
while count <= 3:
    print(f"第 {count} 次")
    count = count + 1      # 每次加 1,否则会死循环!

输出:

第 1 次
第 2 次
第 3 次

新手必背的一句话while 循环体里,一定要有让条件"迟早变成 False"的语句(比如 count = count + 1)。忘了写,程序就会一直转下去,这叫死循环——电脑不累,你会等疯。

经典用法:让用户"输对了才停"

password = ""
while password != "123456":
    password = input("请输入密码:")
print("密码正确,欢迎!")

只要用户没输对,就反复问——这正是 while 的拿手好戏。


六、for 循环:把一堆东西"挨个过一遍"

while 靠条件控制循环,for 则天生为"遍历"而生——把一串东西从头到尾,一个个拿出来处理。

names = ["张三", "李四", "王五"]
for name in names:
    print(f"你好,{name}")

配合 range()for 还能按次数循环:

for i in range(5):        # range(5) = 0,1,2,3,4
    print(i)

range(5) 会生成从 0 到 4 的 5 个数。想从 1 开始,就 range(1, 6)(左闭右开:含 1,不含 6)。

for 和 while 怎么选?

  • 知道要循环几遍(遍历列表、数 1 到 100)→ 用 for,更简洁。
  • 不知道几遍,靠条件决定(输对密码才停)→ 用 while

一句话:for 遍历已知,while 等待条件。


七、break 和 continue:循环的"刹车"和"跳帧"

光会转还不够,还要能控制"什么时候停、什么时候跳过"。

  • break立刻终止整个循环,跳出去。
  • continue跳过本次循环剩余部分,直接进入下一轮。
# break:找到第一个偶数就停
for i in [1, 3, 5, 8, 9]:
    if i % 2 == 0:
        print(f"找到偶数 {i},停")
        break
    print(i)
# 输出:1 3 5 找到偶数 8,停

# continue:跳过奇数,只打印偶数
for i in range(1, 6):
    if i % 2 != 0:
        continue      # 奇数直接跳过,不打印
    print(i)
# 输出:2 4

八、判断 + 循环的组合拳:真实程序长这样

单独看判断和循环都简单,厉害的是把它们嵌套起来。比如打印九九乘法表:

for i in range(1, 10):
    line = ""
    for j in range(1, i + 1):
        line += f"{j}x{i}={i*j}\t"
    print(line)

外层循环管"第几行",内层循环管"这一行打几个式子"。两层 for 一嵌套,九九乘法表就出来了——这就是程序"有逻辑"的开始。


九、动手时间 🎯

实验 1:判断奇偶

num = int(input("输入一个整数:"))
if num % 2 == 0:
    print("是偶数")
else:
    print("是奇数")

实验 2:猜数字(判断 + while 循环)

import random
answer = random.randint(1, 100)   # 随机生成 1~100
guess = 0
while guess != answer:
    guess = int(input("猜一个 1~100 的数:"))
    if guess > answer:
        print("大了")
    elif guess < answer:
        print("小了")
print("猜对了!")

实验 3:FizzBuzz(面试经典热身题)

从 1 数到 30:遇到 3 的倍数打印 "Fizz",5 的倍数打印 "Buzz",同时是 3 和 5 的倍数打印 "FizzBuzz",其他打印数字本身。

for i in range(1, 31):
    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)
提示:% 是取余数,i % 3 == 0 就是"i 能被 3 整除"。

十、小结

  1. 判断用 if/elif/else,条件成立就执行,注意冒号和缩进;比较相等用 == 不是 =
  2. 循环用 while(等条件)和 for(遍历/数次数),while 别忘了让条件终会变 False,否则死循环。
  3. break 跳出、continue 跳过,判断 + 循环一嵌套,就是真实程序的样子。

下一课,我们学 列表与元组——一次存一堆数据,怎么增删改查、怎么切片、怎么遍历。那是你写任何"稍微像样"的程序的必备武器。

先把「猜数字」和「FizzBuzz」敲出来,会"做选择"的程序,才算真正"活"了。

标签: none

添加新评论