多分支判断
与成绩等级
第三天,我不再只是使用一次简单的判断,而是系统认识比较运算符、多个条件分支和条件顺序,并完成了一个能够检查输入范围的成绩等级判断器。
从两条道路开始
我先制作了成年判断器。程序用 age >= 18 检查年龄,再通过 if...else 在“已经成年”和“还没有成年”之间选择一条道路。
day3.py
age = int(input("请输入你的年龄:"))
if age >= 18:
print("你已经成年了")
else:
print("你还没有成年")
加入第三种情况
接着,我学习了 elif。程序会从上到下检查条件,并且只执行第一个符合条件的分支。因此,要先判断成年人,再判断青少年。
elif 可以理解为“否则,如果……”。条件的排列顺序会直接影响程序结果。
成绩等级判断器
我用同样的方法按照分数判断“优秀、良好、及格、不及格”。分数条件从高到低排列,避免较高分数过早进入较低等级。
grade.py
score = int(input("请输入你的成绩:"))
if score > 100 or score < 0:
print("输入错误:成绩必须在0到100之间")
elif score >= 90:
print("你的成绩等级是:优秀")
elif score >= 80:
print("你的成绩等级是:良好")
elif score >= 60:
print("你的成绩等级是:及格")
else:
print("你的成绩等级是:不及格")
检查正常结果之外的情况
最初的程序会把 120 分判断成优秀,把 -10 分判断成不及格。后来我使用 or,先检查成绩是否超出 0 到 100 的范围。
最后,我又测试了 100、90、80、60 和 0。这些数字正好位于等级发生变化的位置,叫作边界值。普通数字能运行,不代表边界一定正确。
今天真正弄懂了什么
if、elif、else可以组成多个互斥分支- 条件会从上到下检查,只执行第一个成立的分支
=、<=、==、!=等符号用来比较or表示左右条件只要有一个成立,整体就成立- 除了测试普通结果,还要测试非法输入和边界值
- 运算符两侧留空格不会改变结果,但能让代码更容易阅读
今天的进步不只是多学了几个关键词,而是开始思考:用户可能输入什么?条件应该按什么顺序?哪些边界最容易出错?