AI编程(五):条件判断 — 让程序会思考

作者:

if/elif/else,教程序做选择


今天学什么

上一篇我们学会了用变量存储数据,用数据类型区分不同的信息。但程序光会”记东西”还不够——它还得会”做选择”。

今天学的是条件判断:教程序根据不同的情况,走不同的路。


生活中的”岔路口”

你每天出门都在做条件判断:

如果 下雨:
    带伞
否则:
    不带伞
如果 温度 > 35度:
    穿短袖
否则如果 温度 > 20度:
    穿长袖
否则:
    穿外套

这就是条件判断的本质:根据条件,选择不同的行为。

在编程里,Python用 ifelifelse 来表达这种”岔路口”逻辑。


if —— 最简单的判断

3.1 基本语法

if 条件:
    条件成立时执行的代码

注意: if 后面有个冒号 :,下面的代码要缩进4个空格

3.2 实例:判断是否成年

age = 20

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

运行结果:

你已经成年了!

如果把 age 改成 15,什么都不会发生——因为条件不成立,程序跳过了 if 里的代码。

类比: if 就像路上的一个岔路口。条件成立,你走左边;条件不成立,你直接走大路(跳过)。


if-else —— 两条路都要走

大多数时候,我们希望”条件成立做什么,不成立做什么”都想清楚。

4.1 基本语法

if 条件:
    条件成立时执行
else:
    条件不成立时执行

4.2 实例:判断奇偶数

num = 7

if num % 2 == 0:
    print(f"{num} 是偶数")
else:
    print(f"{num} 是奇数")

运行结果:

7 是奇数

类比: if-else 就像一个Y字路口。左边是”条件成立”,右边是”条件不成立”,你必须选一条走,不会两条都走。


if-elif-else —— 多条岔路

现实世界往往不止两个选择。比如考试成绩要分A、B、C、D、F五个等级。

5.1 基本语法

if 条件1:
    条件1成立时执行
elif 条件2:
    条件2成立时执行
elif 条件3:
    条件3成立时执行
else:
    以上条件都不成立时执行

elifelse if 的缩写,表示”否则如果”。

5.2 实例:成绩等级判断

score = 85

if score >= 90:
    print("A - 优秀!")
elif score >= 80:
    print("B - 良好")
elif score >= 70:
    print("C - 中等")
elif score >= 60:
    print("D - 及格")
else:
    print("F - 不及格,继续努力!")

运行结果:

B - 良好

重要规则: elif从上往下依次判断的,一旦某个条件成立,就执行对应的代码,后面的全部跳过

所以当 score = 85 时:

  • 85 >= 90?❌ 不成立,跳过
  • 85 >= 80?✅ 成立!执行 print("B - 良好"),后面的不再判断

类比: 就像高速公路上的多个出口。你经过第一个出口检查站,如果目的地匹配就出去;不匹配就继续开到下一个检查站。


比较运算符 —— 条件的”天平”

条件判断的核心是比较。Python提供了6个比较运算符:

运算符 含义 示例 结果

|——–|——|——|——|

== 等于 5 == 5 True
!= 不等于 5 != 3 True
> 大于 5 > 3 True
< 小于 5 < 3 False
>= 大于等于 5 >= 5 True
<= 小于等于 3 <= 5 True

易错点: = 是赋值(给变量传值),== 才是比较(判断是否相等)。初学者最容易搞混这两个。

# ❌ 错误:把 == 写成 =
if age = 18:    # SyntaxError!
    print("成年")

# ✅ 正确
if age == 18:
    print("成年")

逻辑运算符 —— 组合多个条件

有时候一个条件不够用,需要多个条件组合。

7.1 三个逻辑运算符

运算符 含义 示例 说明

|——–|——|——|——|

and 并且 a > 0 and b > 0 两个都成立,结果才为True
or 或者 a > 10 or b > 10 有一个成立,结果就为True
not 取反 not (a > 10) True变False,False变True

7.2 实例:判断闰年

闰年的规则:能被4整除但不能被100整除,或者能被400整除。

year = 2024

if (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
    print(f"{year} 年是闰年")
else:
    print(f"{year} 年不是闰年")

运行结果:

2024 年是闰年

7.3 实例:年龄区间判断

age = 25

if age >= 18 and age <= 60:
    print("你是劳动适龄人口")

Python允许简写连续比较:

# 这两种写法等价
if age >= 18 and age <= 60:
    print("可以工作")

if 18 <= age <= 60:
    print("可以工作")  # 更简洁!

缩进 —— Python的灵魂

这是今天最重要的部分之一。Python用缩进来表示代码块,而不是用大括号 {}

8.1 为什么缩进这么重要?

在C语言或Java中:

// Java用大括号
if (age >= 18) {
    System.out.println("成年");
    System.out.println("可以投票");
}

在Python中:

# Python用缩进
if age >= 18:
    print("成年")
    print("可以投票")

缩进的代码属于 if 代码块,缩进结束意味着代码块结束。

8.2 缩进错误示例

score = 85

# ❌ 错误:print没有缩进,不属于if
if score >= 60:
print("及格")  # IndentationError!

# ❌ 错误:缩进不一致(有的用空格,有的用Tab)
if score >= 60:
    print("及格")   # 4个空格
	print("恭喜")   # 1个Tab —— IndentationError!

# ✅ 正确:统一用4个空格
if score >= 60:
    print("及格")
    print("恭喜")

8.3 缩进规则总结

  1. ifelifelse 后面必须有冒号 :
  2. 冒号下面的代码必须缩进(推荐4个空格)
  3. 同一个代码块的缩进必须一致
  4. 不要混用空格和Tab(VS Code默认帮你转换)
  5. 缩进结束,代码块结束

嵌套 if —— 岔路里的岔路

if 里面可以再放 if,就像岔路里面还有岔路。

age = 25
has_id = True

if age >= 18:
    print("年龄符合要求")
    if has_id:
        print("请进!")
    else:
        print("请出示身份证")
else:
    print("未成年人不能进入")

运行结果:

年龄符合要求
请进!

注意缩进层级: 内层的 if 要比外层多缩进4个空格(总共8个空格)。

if age >= 18:           # 第0层(不缩进)
    print("成年")       # 第1层(4个空格)
    if has_id:          # 第1层(4个空格)
        print("请进")   # 第2层(8个空格)

实战:猜数字游戏

学了条件判断,我们来写一个完整的小程序——猜数字游戏。

10.1 游戏规则

  1. 程序心里想一个数字(比如 42
  2. 玩家输入一个猜测的数字
  3. 程序判断猜对了、猜大了、还是猜小了

10.2 完整代码

# 猜数字游戏
# 程序设定一个秘密数字,玩家来猜

secret = 42  # 程序心里想的数字

# 获取玩家的输入
guess = int(input("请猜一个数字(1-100):"))

# 判断结果
if guess == secret:
    print("🎉 恭喜你,猜对了!")
elif guess > secret:
    print(f"📈 {guess} 太大了,再小一点!")
else:
    print(f"📉 {guess} 太小了,再大一点!")

10.3 代码逐行解读

secret = 42
# 变量secret存储程序想的数字
guess = int(input("请猜一个数字(1-100):"))
# input()获取用户输入(字符串类型)
# int()把字符串转成整数
# 存到guess变量里
if guess == secret:
    print("🎉 恭喜你,猜对了!")
# == 判断是否相等
elif guess > secret:
    print(f"📈 {guess} 太大了,再小一点!")
# > 判断是否大于
else:
    print(f"📉 {guess} 太小了,再大一点!")
# 以上都不满足,说明猜小了

10.4 运行效果

请猜一个数字(1-100):50
📈 50 太大了,再小一点!
请猜一个数字(1-100):30
📉 30 太小了,再大一点!
请猜一个数字(1-100):42
🎉 恭喜你,猜对了!

小练习

练习1:判断正负零

写一个程序,输入一个数字,判断它是正数、负数还是零。

num = int(input("请输入一个数字:"))

if num > 0:
    print("正数")
elif num < 0:
    print("负数")
else:
    print("零")

练习2:BMI计算器(带判断)

height = float(input("请输入身高(米):"))
weight = float(input("请输入体重(公斤):"))

bmi = weight / (height * height)
print(f"你的BMI是:{bmi:.1f}")

if bmi < 18.5:
    print("偏瘦,多吃点!")
elif bmi < 24:
    print("正常,继续保持!")
elif bmi < 28:
    print("偏重,注意饮食")
else:
    print("肥胖,建议就医咨询")

练习3:改造猜数字游戏

在猜数字游戏的基础上,加上以下功能:

  • 加一个变量 chances = 3,限制只能猜3次
  • 如果3次都没猜对,打印”机会用完了,游戏结束!”

提示:这需要用到下一章的循环知识,可以先尝试用3个 if 实现。


今日小结

知识点 说明

|——–|——|

if 条件成立时执行
elif 否则如果,多个条件分支
else 以上条件都不成立时执行
== != > < >= <= 比较运算符,返回True/False
and or not 逻辑运算符,组合多个条件
缩进 Python用4个空格缩进表示代码块
嵌套if if里面可以再放if

记住: = 是赋值,== 是比较。这是新手最常犯的错误。


下篇预告

今天我们学会了让程序”做选择”。但目前的程序只能判断一次、执行一次。

如果要让程序重复做某件事怎么办?比如让猜数字游戏能反复猜,直到猜对为止?

下一篇:AI编程(六):循环 —— 让程序不厌其烦

我们将学习 for 循环和 while 循环,教程序”重复劳动”,让猜数字游戏真正好玩起来!

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注