繁体   English   中英

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

[英]How can i divide float with another float?

当我尝试将浮点数与另一个浮点数相除时,出现“ /不支持的操作数类型:'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中的每个值都是float值,我期望某些float值的结果。 但正如我之前所说,会发生“ /:'str'和'float'不支持的操作数类型”错误。

我怎么解决这个问题?

您的代码几乎没有问题。

  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. 错误处理。 据我了解,您正在使用的列表包含不同类型的值。 对于这种特殊情况,我不能肯定地说,但是总的来说,有必要添加异常处理程序以防止一旦发生错误就中断循环。

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

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

不支持的操作数类型意味着您的类型之一不是浮点数,而是str(字符串),只需确保您的操作数是浮点数即可:

spkd_c2_list.append(float(diff2_list[k-1])/float(diff2_list[k+1]))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM