如何将浮点与另一个浮点分开?

2024-06-16 10:34:00 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图用另一个float除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中的每个值都是浮点值 我期望得到一些浮点值的结果。但正如我之前所说,“不支持/:'str'和'float'的操作数类型”出现错误。你知道吗

我怎样才能解决这个问题?你知道吗


Tags: in类型forlen错误floatlist浮点
2条回答

你的代码没有什么问题。你知道吗

  1. 处理错误消息中描述的脚本时出错。您正在使用索引遍历列表。此列表的元素有不同的类型(至少是strfloat)。如果您的目标是划分两个元素,则需要将这两个元素都转换为float。你知道吗
  2. 你没有正确使用^{}。首先,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")

不支持的操作数类型意味着其中一个类型不是浮点类型而是str(字符串),请确保操作数是浮点类型:

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

相关问题 更多 >