Python自定义函数持续返回-1而非预期结果,请求技术排查
问题排查与修复方案
嘿,我来帮你理清这个问题!你的Add2NumbersTogether函数一直返回-1,核心原因是try块里的代码触发了异常,导致直接进入except分支返回-1。咱们一步步拆解执行过程:
1. 异常触发的具体过程
当你传入n=90.09和v=9时:
- 第一步:
s = str(x) + '.'→str(90.09)会生成字符串"90.09",拼接.后变成"90.09." - 第二步:
y = float(s)→ 这个"90.09."是无效的浮点数格式(末尾多了一个小数点),Python无法将其转换为浮点数,直接抛出ValueError异常 - 异常被
except捕获,函数立刻返回-1,后面的return (x + y)完全没机会执行
2. 代码逻辑的误区
看起来你可能想给x做某种格式处理?但这个字符串拼接+转float的操作完全没必要,反而破坏了原本的数值格式,直接导致了异常。你的目标是实现数值相加,根本不需要这些多余的转换步骤。
3. 修复后的代码
去掉那些不必要的字符串操作,直接对参数做加法即可。如果需要保留异常捕获来处理非数值输入的情况,可以这样写:
def Add2NumbersTogether(x, y): try: # 确保参数能转为数值类型后相加 return float(x) + float(y) except (TypeError, ValueError): # 只捕获无法转为数值的异常,避免隐藏其他问题 return -1 n = 90.09 v = 9 a = Add2NumbersTogether(n, v) print(a) # 现在会输出99.09,符合预期
小提示
- 尽量别用
except:捕获所有异常,这会掩盖很多意想不到的错误(比如拼写错误、索引错误等),最好明确指定要处理的异常类型(比如ValueError、TypeError) - 如果你的函数只接收数值类型参数,甚至可以去掉try-except,让错误直接抛出,反而更方便调试
内容的提问来源于stack exchange,提问作者Euan Mason
相关产品推荐
相关产品推荐

