为什么我使用'sum'得到一个类型错误“'float'对象不可编辑”?

2024-04-28 17:38:01 发布

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

我正在尝试在.csv文件中的值之间运行计算。但是,当我尝试执行代码时,它会给出一个错误,即while循环不可iterable。我的代码是:

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:\Users\kaoet\Desktop\CODING\trial1.py", line 32, in <module>
    sum = sum(chime_cra + chime_cdec)
TypeError: 'float' object is not iterable

我不确定是什么问题


Tags: csvselfinputgetcountercolfloatrow
1条回答
网友
1楼 · 发布于 2024-04-28 17:38:01

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

虽然没有必要,但您应该只使用chime_cra + chime_cdec

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

相关问题 更多 >