如何将浮子除以另一个浮子?

时间:2019-06-11 08:16:37

标签: python python-3.x

当我尝试将浮点数与另一个浮点数分开时,会出现“ /不支持的操作数类型:'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'不支持的操作数类型”错误。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您的代码很少有问题。

  1. 在处理错误消息中描述的脚本时发生错误。您正在使用索引遍历列表。该列表的元素具有不同的类型(至少strfloat)。如果您的目标是划分两个元素,则需要将两个元素都转换为float
  2. 您没有正确使用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):
    
  3. 错误处理。据我了解,您正在使用的列表包含不同类型的值。对于这种特殊情况,我不能肯定地说,但是总的来说,有必要添加exception handler来防止发生错误时发生循环中断。

应用所有这些技巧,您的代码将如下所示:

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]))