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

Python自定义函数无法将输入字符串转为整数,请求协助排查

问题排查与修复

你的代码核心问题是**validate_credits函数完成整数转换后,没有返回转换后的整数值**。函数内部只是把局部变量input_credits转成了整数,但这个变量不会自动同步到外部,导致你后续的mark1/mark2/mark3依然是用户输入的原始字符串,根本没拿到转换后的结果。

另外,裸except语句会捕获所有异常(比如KeyboardInterrupt这类),建议明确捕获ValueError,避免误处理其他意外情况。

修复后的代码

score = [0,20,40,60,80,100,120] 

def validate_credits(input_credits):
    try:
        # 转换为整数后返回,让外部能拿到转换结果
        converted = int(input_credits)
    except ValueError:
        raise ValueError('integer required')
        
    if converted not in score:
        raise ValueError('out of range')
        
    return converted
        
while True: 
    try: 
        mark1 = validate_credits(input('Enter your total PASS marks: '))
        mark2 = validate_credits(input('Enter your total DEFER marks: '))
        mark3 = validate_credits(input('Enter your total FAIL marks: '))
        
        # 可添加后续逻辑,比如验证转换结果类型
        print(f"转换后结果(整数类型):PASS={mark1}, DEFER={mark2}, FAIL={mark3}")
        break  # 测试时可加break退出循环,正式场景按需调整
        
    except ValueError as e: 
        print(e)

关键修改点

  • 给validate_credits函数添加返回值:转换完成后通过return converted把整数结果传递给调用者。
  • 调用函数时直接将input()的输入传入,并把返回值赋值给mark1等变量,确保这些变量存储的是整数类型。
  • 将裸except改为except ValueError,只捕获整数转换失败的异常,避免处理无关异常导致的逻辑混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:15:33