当我尝试将浮点数与另一个浮点数分开时,会出现“ /不支持的操作数类型:'str'和'float'”错误。 但是,我必须将浮子除以另一个浮子...
for k in range(0, len(diff2_list)):
xt_d2 = diff2_list[k]
if k==0 or k==(len(diff2_list)-1):
spkd_c2_list.append("NAN")
else:
spkd_c2_list.append((diff2_list[k-1])/(diff2_list[k+1]))
列表diff2_list
中的每个值都是浮点数
我期望一些浮点值的结果。但正如我之前所说,会出现“ /:'str'和'float'不支持的操作数类型”错误。
我该如何解决这个问题?
答案 0 :(得分:1)
您的代码很少有问题。
str
和float
)。如果您的目标是划分两个元素,则需要将两个元素都转换为float
。您没有正确使用range()
。首先,range(0, len(diff2_list))
等效于range(len(diff2_list))
。但是,如果我们在循环内查看代码,则会发现下一个条件:if k==0 or k==(len(diff2_list)-1):
。您添加了此功能是为了避免访问不在列表中的索引时出错。但是您可以通过确定范围来排除列表的第一个元素和最后一个元素的索引来防止这种情况。
for k in range(1, len(diff2_list) - 1):
应用所有这些技巧,您的代码将如下所示:
diff2_list = [1, 1.1, "1.2", "1.3"]
spkd_c2_list =[]
for k in range(1, len(diff2_list) - 1):
xt_d2 = diff2_list[k] # if you need it, cause in current code you don't use it
try:
spkd_c2_list.append(float(diff2_list[k - 1]) / float(diff2_list[k + 1]))
except:
spkd_c2_list.append("NAN")
答案 1 :(得分:0)
不受支持的操作数类型意味着您的类型之一不是浮点数,而是str(字符串),只需确保您的操作数是浮点数即可:
spkd_c2_list.append(float(diff2_list[k-1])/float(diff2_list[k+1]))