第二章 · 流程控制

条件判断

本节目标

学完这一节,你会知道:

  1. 为什么程序需要条件判断
  2. 如何使用 ifelifelse
  3. 如何写比较条件和组合条件
  4. 如何避免常见的缩进、等号和条件顺序错误
  5. 如何写一个简单的成绩等级判断程序

条件判断像程序的路口:满足某个条件就走一条路,不满足就走另一条路。

先跑一个例子

新建文件 score_grade.py,写入:

score = 85

if score >= 90:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 60:
    grade = "及格"
else:
    grade = "不及格"

print(f"分数:{score}")
print(f"等级:{grade}")

运行:

python3 score_grade.py

你会看到:

分数:85
等级:B

score 改成不同分数,输出结果也会变化。

为什么需要条件判断?

如果程序只能从上到下一行行执行,它就不能应对不同情况。

比如判断年龄:

age = 18

if age >= 18:
    print("你已经成年")
else:
    print("你还未成年")

如果 age 是 18 或更大,执行第一条输出;否则执行第二条输出。

if / elif / else

最基本结构:

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

多种情况可以用 elif

weather = "rainy"

if weather == "sunny":
    print("出门散步")
elif weather == "rainy":
    print("记得带伞")
elif weather == "snowy":
    print("注意保暖")
else:
    print("正常安排")

规则:

  1. if 必须有
  2. elif 可以有多个,也可以没有
  3. else 最多一个,也可以没有
  4. 从上到下判断,命中一个分支后,后面的分支就不会再执行

比较条件

条件通常由比较运算得到。

age = 20

print(age >= 18)
print(age < 18)
print(age == 20)
print(age != 30)

常见比较符号:

  • ==:等于
  • !=:不等于
  • >:大于
  • <:小于
  • >=:大于等于
  • <=:小于等于

注意:= 是赋值,== 才是判断是否相等。

多条件组合

有时候一个判断需要多个条件。

age = 20
has_ticket = True

if age >= 18 and has_ticket:
    print("可以入场")
else:
    print("不能入场")

逻辑运算符:

  • and:两个条件都成立
  • or:至少一个条件成立
  • not:取反

例子:

role = "vip"

if role == "admin" or role == "vip":
    print("有访问权限")
is_banned = False

if not is_banned:
    print("允许发言")

条件顺序很重要

判断区间时,顺序会影响结果。

正确写法:

score = 95

if score >= 90:
    print("优秀")
elif score >= 80:
    print("良好")
elif score >= 60:
    print("及格")
else:
    print("不及格")

如果先写 score >= 60,那么 95 分会先命中“及格”,后面的“优秀”就没有机会执行了。

条件表达式

简单的二选一可以写成一行:

age = 20
status = "成年" if age >= 18 else "未成年"

print(status)

刚入门时,优先写普通 if/else。等你觉得代码很简单,再考虑条件表达式。

逐行拆解

再看开头的成绩程序:

if score >= 90:
    grade = "A"

如果分数大于等于 90,等级是 A。

elif score >= 80:
    grade = "B"

如果前面的条件不成立,再判断是否大于等于 80。

else:
    grade = "不及格"

如果前面的条件都不成立,就执行 else

自己改一改

score_grade.py 改成根据年龄判断票价:

age = 12

if age < 6:
    price = 0
elif age < 18:
    price = 20
elif age < 60:
    price = 40
else:
    price = 20

print(f"年龄:{age}")
print(f"票价:{price} 元")

然后继续改:

  1. age 改成不同数字观察结果
  2. 增加一个变量 is_member
  3. 如果是会员,再优惠 5 元

实战:BMI 计算器

新建文件 bmi.py

weight = float(input("请输入体重,单位 kg:"))
height = float(input("请输入身高,单位 m:"))

bmi = weight / (height ** 2)

if bmi < 18.5:
    level = "偏瘦"
elif bmi < 24:
    level = "正常"
elif bmi < 28:
    level = "偏胖"
else:
    level = "肥胖"

print(f"BMI:{bmi:.1f}")
print(f"分类:{level}")

这个程序会根据不同 BMI 给出不同分类。

常见错误

1. 忘记冒号

错误写法:

if age >= 18
    print("成年")

正确写法:

if age >= 18:
    print("成年")

2. 缩进不对

错误写法:

if age >= 18:
print("成年")

正确写法:

if age >= 18:
    print("成年")

3. 把 == 写成 =

错误写法:

if username = "admin":
    print("登录成功")

正确写法:

if username == "admin":
    print("登录成功")

4. 条件顺序写反

score = 95

if score >= 60:
    print("及格")
elif score >= 90:
    print("优秀")

这段代码不会输出“优秀”。更严格的条件要放在前面。

小练习

练习 1:判断奇偶

创建变量 number,判断它是奇数还是偶数。

练习 2:登录验证

创建两个变量:

  • username
  • password

如果用户名是 "admin" 且密码是 "123456",输出“登录成功”,否则输出“用户名或密码错误”。

练习 3:成绩评价

创建变量 score

  • 90 分及以上:优秀
  • 80 分及以上:良好
  • 60 分及以上:及格
  • 60 分以下:继续加油

参考答案

练习 1:

number = 7

if number % 2 == 0:
    print("偶数")
else:
    print("奇数")

练习 2:

username = "admin"
password = "123456"

if username == "admin" and password == "123456":
    print("登录成功")
else:
    print("用户名或密码错误")

练习 3:

score = 86

if score >= 90:
    print("优秀")
elif score >= 80:
    print("良好")
elif score >= 60:
    print("及格")
else:
    print("继续加油")

小结

这一节你学会了:

  1. 条件判断可以让程序根据不同情况执行不同代码
  2. ifelifelse 从上到下判断
  3. 比较运算会得到 TrueFalse
  4. andornot 可以组合多个条件
  5. 条件顺序、冒号和缩进都很重要

下一节我们会学习循环。它可以让程序重复执行一段代码,帮你处理大量重复任务。

程序会做选择了,马哥觉得它开始有脑子了

if/elif/else 就是给程序安排路口。刚开始最容易踩的是冒号、缩进和条件顺序,别怕,报错通常很诚实。把成绩、年龄、登录这些例子多换几个值,你会看见程序怎样一步步做决定。

讨论 (0)

还没有评论,来抢沙发吧!