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

如何修复勾股定理验证Python程序中的ValueError输入错误?

修复空输入引发的ValueError:勾股定理验证程序优化

你的问题根源在于直接将input()的返回值传给int()——当用户空输入时,input()返回空字符串"",而int()无法将空字符串转换为整数,因此抛出ValueError。要解决这个问题,需要给输入加上有效性校验,确保只有合法的整数输入才会被转换计算。

下面是两种实用的修复方案:

方案1:异常捕获(推荐,覆盖所有非法输入场景)

通过try-except捕获转换时的异常,配合循环让用户重新输入,直到输入合法:

def get_valid_integer(prompt):
    while True:
        user_input = input(prompt)
        try:
            return int(user_input)
        except ValueError:
            print("请输入有效的整数,不能为空或非数字内容!")

# 获取合法的a、b、c值
a = get_valid_integer("enter a number a:")    
b = get_valid_integer("enter a number b:")      
c = get_valid_integer("enter a number c:")

result = (a**2 + b**2) == c**2     
print(f"result = {result}")       

这个方案不仅处理了空输入,还能应对用户输入字母、符号等非数字内容的情况,鲁棒性更强。

方案2:先判断输入是否为空

如果只需要针对性处理空输入,可以先检查输入是否为空字符串,再进行转换:

def get_non_empty_integer(prompt):
    while True:
        user_input = input(prompt).strip()  # 去除首尾空格,避免纯空格被误判为有效输入
        if not user_input:
            print("输入不能为空,请重新输入!")
            continue
        try:
            return int(user_input)
        except ValueError:
            print("请输入有效的整数!")

a = get_non_empty_integer("enter a number a:")    
b = get_non_empty_integer("enter a number b:")      
c = get_non_empty_integer("enter a number c:")

result = (a**2 + b**2) == c**2     
print(f"result = {result}")       

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:55:16