为什么我得到一个使用"sum""'float' object is not iterable"的TypeError?



我正在尝试在.csv文件中的值之间运行计算。然而,当我尝试执行代码时,会出现while循环不可迭代的错误。我的代码是:

import csv
import math
counter_chime = 1
chime_cra = 0
chime_cdec = 0
fermi_cra = 0
fermi_cdec = 0
grbfrb_overlap = []
frbcode = ""
grbcode = ""
dis = 0
counter_fermi = 0
class adata():
def __init__(self, filename):
with open(filename, "r") as f_input:
csv_input = csv.reader(f_input)
self.details = list(csv_input)
def get_col_row(self, col, row):
return self.details[row][col]
chimed = adata('chime2.csv')
fermid = adata('fermi.csv')
while counter_chime < 600:
frbcode = chimed.get_col_row(0, counter_chime)
chime_cra = chimed.get_col_row(1, counter_chime)
chime_cdec = chimed.get_col_row(2, counter_chime)
chime_cra = float(chime_cra)
chime_cdec = float(chime_cdec)
sum = sum(chime_cra + chime_cdec)
print (sum)
counter_chime +=1

返回的错误为:

Traceback (most recent call last):
File "C:UserskaoetDesktopCODINGtrial1.py", line 32, in <module>
sum = sum(chime_cra + chime_cdec)
TypeError: 'float' object is not iterable

我不确定问题出在哪里。

由于chime_crachime_cdecfloat,因此不需要使用sum来求和
您可以执行sum([chime_cra, chime_cdec]),这是sum的可迭代项,并且它不会在第一个循环中抱怨。

尽管没有必要,但您应该只使用chime_cra + chime_cdec

此外,这行代码稍后会导致另一个错误,因为在将sum用作变量名时,您正在重新定义它。相反,您应该为求和结果找到一个有意义的名称。

相关内容

最新更新