Python · Day 03

多分支判断
与成绩等级

第三天,我不再只是使用一次简单的判断,而是系统认识比较运算符、多个条件分支和条件顺序,并完成了一个能够检查输入范围的成绩等级判断器。

从两条道路开始

我先制作了成年判断器。程序用 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。这些数字正好位于等级发生变化的位置,叫作边界值。普通数字能运行,不代表边界一定正确。

今天真正弄懂了什么

  • ifelifelse 可以组成多个互斥分支
  • 条件会从上到下检查,只执行第一个成立的分支
  • =<===!= 等符号用来比较
  • or 表示左右条件只要有一个成立,整体就成立
  • 除了测试普通结果,还要测试非法输入和边界值
  • 运算符两侧留空格不会改变结果,但能让代码更容易阅读

今天的进步不只是多学了几个关键词,而是开始思考:用户可能输入什么?条件应该按什么顺序?哪些边界最容易出错?