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

如何解决TypeError: 不支持对'str'与'float'执行减法运算的错误

解决TypeError: unsupported operand type(s) for -: 'str' and 'float'

这个错误的核心原因是**discount_ranges[r+1]是字符串类型**,没法和浮点数.99执行减法运算。给你两种直接的解决办法:

方法1:提前把discount_ranges转成数值列表

如果discount_ranges是从文件、用户输入或者其他地方读取的字符串列表,初始化的时候就把每个元素转成浮点数(或整数,根据你的业务需求):

# 假设original_discount_list是你原本的字符串列表
discount_ranges = [float(val) for val in original_discount_list]

这样后续用到discount_ranges里的元素时,直接就是数值类型,不用再临时转换。

方法2:在运算时临时转换类型

如果不方便修改discount_ranges的初始化逻辑,直接在约束的表达式里把字符串转成浮点数:
修改后的代码如下:

m.addConstrs( Xtr[t, r] <= (float(discount_ranges[r+1]) - .99)*Otr[t, r] for t in range(T)
                                        for r in range(R))

m.addConstrs( Xtr[t, r] <= (float(discount_ranges[r+1]) - .99)*Otr[t, r] for t in range(T)                                             
                                        for r in range(R))

额外提醒:注意r+1的索引不要超出discount_ranges的长度范围,避免触发IndexError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:55:24