如何解决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
相关产品推荐
相关产品推荐

