函数中的
条件判断
第十一天,我把昨天学习的函数和以前的条件判断组合起来。函数不再只完成固定计算,而是可以根据传入的数据,选择并返回不同结果。
让函数判断成绩
参数 score 负责接收调用函数时传入的成绩,函数再通过条件判断返回字符串。
def check_score(score):
if score >= 60:
return "及格"
else:
return "不及格"
user_score = int(input("请输入你的成绩:"))
result = check_score(user_score)
print("成绩结果:", result)
输入 60 时返回“及格”,输入 50 时返回“不及格”,说明边界值和两个分支都运行正确。
函数内外为什么使用不同变量
user_score 在函数外保存用户输入,调用函数时把它保存的数字传进去;函数内部的参数 score 接收这个数字。传递的是值,不要求两边变量名相同。
如果用户输入 75,过程就是:user_score = 75 → 调用 check_score(user_score) → 函数内部本次得到 score = 75 → 返回结果给 result。
正确理解赋值语句的顺序
今天总结出一个很有用的阅读方法,但也明确了它的适用范围:程序整体仍然从上到下执行;遇到 变量 = 表达式 时,先计算等号右边,再把结果保存到左边。
user_score = int(input("请输入成绩:"))
result = check_score(user_score)
第一行先输入并转换,再保存到 user_score;第二行先调用函数并取得返回值,再保存到 result。不能把这个规则简单概括成“所有代码都从右往左”。
完整的成绩等级判断
检查正常等级之前,先排除小于 0 或大于 100 的错误输入,否则 120 也会满足“大于等于 90”。
def check_score(score):
if score > 100 or score < 0:
return "输入错误"
elif score >= 90:
return "优秀"
elif score >= 80:
return "良好"
elif score >= 60:
return "及格"
else:
return "不及格"
依次测试 120、95、85、70、50 和 -10,错误范围与四个正常等级全部得到正确结果。
return 会立即结束函数
函数执行到 return 时,会送出结果并立即结束本次调用。因此,写在同一函数中且位于 return 后面的代码不会执行。
def test_return():
print("函数开始")
return "函数返回的结果"
print("函数结束")
result = test_return()
print(result)
我正确判断出“函数结束”不会出现。终端只会显示“函数开始”,以及最后通过 print(result) 显示的返回结果。return 本身并不负责打印。
学习建议生成器
最后,我制作了一个函数,根据当天学习分钟数返回不同建议,同时先检查负数输入。
def get_study_advice(minutes):
if minutes < 0:
return "输入错误,时间不能小于0"
elif minutes >= 60:
return "今日学习目标已经完成"
elif minutes >= 30:
return "已经完成一半以上,继续坚持"
else:
return "先从完成30分钟开始"
study_minutes = int(input("请输入今天学习的分钟数:"))
advice = get_study_advice(study_minutes)
print("学习建议:", advice)
测试 -10、20、45 和 60,分别进入错误、起步、继续坚持和完成目标四个分支,结果全部正确。
今天真正弄懂了什么
- 参数负责接收函数调用时传入的值
- 函数外变量和函数参数可以使用不同名称
- 赋值语句先计算右边,再把结果保存到左边
- 程序整体仍然按照从上到下的顺序执行
- 函数可以使用条件判断返回不同结果
- 判断等级时要先处理错误范围,再处理正常范围
return会立即结束函数,但不会自动打印结果
今天不仅会把判断写进函数,也开始能沿着数据的传递方向阅读程序:输入保存到变量,变量传入参数,函数判断后返回结果,外部变量再接住它。