You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在同一条if语句中同时检测异常与输入分值小于0的情况

考试成绩平均分计算合法性校验方案

答案是可以实现,你可以通过封装校验函数的方式,把输入转换异常捕获、数值范围校验的逻辑都收拢到函数中,最终在同一条if语句内完成所有校验逻辑,优化后的实现代码如下:

def get_valid_score(prompt):
    try:
        score = float(input(prompt))
        # 同时完成数值范围校验,返回校验结果和分数值
        return (score >= 0, score)
    except ValueError:
        # 捕获非数值输入的异常,返回校验失败
        return (False, 0)

while True:
    valid1, score1 = get_valid_score('Enter your 1st score: ')
    valid2, score2 = get_valid_score('Enter your 2nd score: ')
    # 同一条if语句完成两个分数的所有合法性校验
    if not (valid1 and valid2):
        print('Invalid value, try again...')
        continue
    print(f'Your average is {(score1 + score2) / 2}')
    break

方案说明

  • 封装的get_valid_score函数内部完成了输入读取、非数值输入的异常捕获、分数大于等于0的合法性校验三个逻辑,只要任意一个环节不满足就会返回校验失败的结果
  • 主逻辑中的if语句会同时判断两个分数的校验状态,只要有一个分数校验不通过就会触发重试提示,完全符合你的需求
  • 相比原有代码中使用的无差别except,这里指定捕获ValueError更规范,不会误捕获程序运行中的其他异常(比如键盘中断信号)

内容的提问来源于stack exchange,提问作者OHarry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 07:48:00