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

Python使用curve_fit拟合实验数据时报float与str不支持减运算错误

错误原因

你在打印拟合参数的循环中意外覆盖了全局变量p的原值:

  • 最初定义的p = 50是数值类型,用于Fabry_Perot函数的计算逻辑
  • 后续打印循环写为for v, p in enumerate(par):,此处的循环变量p会直接覆盖原数值型变量p,将其赋值为par列表中的字符串元素,循环结束后p最终为字符串'd'
  • 后续调用Fabry_Perot函数时,执行到d*1000-p的计算逻辑,就出现了「浮点型不能和字符串做减法」的类型错误。

解决方法

将打印循环的变量名改为和全局变量不冲突的名称即可,示例修改如下:

# print fit parameters and uncertainties
for v, par_name in enumerate(par):
    print(f"{par_name}: {rslt[v]} ± {err[v]}")

优化建议:可以修改Fabry_Perot和guass_FP函数,把所有依赖的参数都显式作为入参传递,不要依赖全局变量,从根源上避免这类变量意外覆盖的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:57:00