当我试图将浮点数与另一个浮点数相除时,出现了“/不支持的操作数类型:'str‘and ' 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'”错误。
我该如何解决这个问题?
发布于 2019-06-11 08:27:34
你的代码几乎没有什么问题。
处理错误消息中描述的脚本时发生
str
和float
)。如果您的目标是划分两个元素,则需要在不正确使用range()
的情况下将这两个元素都转换为float
.range(0, len(diff2_list))
等同于range(len(diff2_list))
。但是如果我们查看循环中的代码,我们会发现下一个条件:if k==0 or k==(len(diff2_list)-1):
。为了避免在访问列表之外的索引时出现错误,您添加了这一项。但您可以通过确定不包括list的第一个和最后一个元素的索引的范围来防止它。对于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")
发布于 2019-06-11 08:18:36
不支持的操作数类型意味着您的其中一个类型不是浮点数,而是str (字符串),只需确保您的操作数是浮点数:
spkd_c2_list.append(float(diff2_list[k-1])/float(diff2_list[k+1]))
https://stackoverflow.com/questions/56539293
复制