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

Python异常处理修改咨询:实现三个数值全部输入后再校验合法性

问题原因

原代码将三个输入转换逻辑全部放在同一个try代码块中,只要任意一步触发ValueError异常,程序会直接跳出try块执行异常分支,后续的输入语句不会被执行,因此无法完成三个输入的收集。

解决方案

你可以为每个输入单独设置异常捕获逻辑,用一个全局标记记录是否存在输入错误,全部输入完成后再统一判断处理:

def main():
    # 初始化错误标记,默认无错误
    has_error = False

    try:
        num1 = int(input("Enter in Number 1: "))
    except ValueError:
        # 输入非法时标记错误
        has_error = True

    try:
        num2 = int(input("Enter in Number 2: "))
    except ValueError:
        has_error = True

    try:
        num3 = int(input("Enter in Number 3: "))
    except ValueError:
        has_error = True

    if has_error:
        print("One of your inputs are wrong!")
    else:
        print("The answer is ", num1 + num2 + num3)  

if __name__ == "__main__":
    main()

优化写法(可选)

如果后续需要扩展更多输入项,可以把输入逻辑封装成公共函数,减少重复代码:

# 封装输入校验函数,返回转换后的数值和是否校验成功的标记
def get_valid_number(prompt):
    try:
        return int(input(prompt)), True
    except ValueError:
        return None, False

def main():
    num1, valid1 = get_valid_number("Enter in Number 1: ")
    num2, valid2 = get_valid_number("Enter in Number 2: ")
    num3, valid3 = get_valid_number("Enter in Number 3: ")

    # 只要有一个校验失败就输出错误
    if not all([valid1, valid2, valid3]):
        print("One of your inputs are wrong!")
    else:
        print("The answer is ", num1 + num2 + num3)  

if __name__ == "__main__":
    main()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:48:02