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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:58:13