我已经奋斗了几天,以访问列表中的第二列并汇总浮动信息。
列表中的第一列有12行,所有行代表一年中的每个月,并用月名填充。第二列充满浮游物,代表每月的降雨量。
当尝试添加浮点数的第二列时,我不断得到"TypeError: unsupported operand type(s) for +=: 'int' and 'str"
。好的,我完全理解这一点。您不能添加字符串,因为它们是字母,而不是数字。这是我为此功能编写的代码:
def total_Rainfall(months):
total = 0
for c in range(2):
for r in range(12):
total += months[r][c]
print('The total rainfall for the year is ', total, ' inches.')
如您所见,我将total初始化为0,然后将其用作累加器以累加每个float值,然后打印总计。称为月份的列表列表(作为参数传递)有2列(1表示月份字符串,1表示降雨浮动-浮动在第二列)。我遍历列和数组以访问浮点数。
我尝试使用[:,1]
进行访问,但这不是元组。我尝试了切片[0:11],但是必须先访问字符串行才为我创建了一个我不希望启用的断点。我尝试使用total = int(months[r][c])
,但无济于事。我肯定我的浮动对象是列表中的浮动对象,而不是字符串,这是证据:['April', 2.0]
。
我想我会很快得到这个,因为我已经在C#中处理了多维列表。我到底在想什么!
我不是在寻找答案。我正在寻找正确方向的指导。希望我提供了足够的信息。我很确定自己会错过一些非常简单的事情,最后我会给自己打耳光。请帮忙!我显然对此考虑过度。
注意:不能为此使用预先存在的库。有点违反任务的目的。
答案 0 :(得分:1)
现在,您正在列表列表中查找每个元素并将其加起来。结果是:
total = 0
total += 'April'
total += 2.0
total += 'a month name'
total += 1.3 # random float value
很明显,这是无效的。因此,您必须仅访问数组中的第二列。您可以使用以下任一方法执行此操作:
Method 1:
for row in months:
total += row[1]
Method 2:
for row_index in range(len(months)):
total += months[row_index][1]
两种方法都不错,但是我更喜欢方法1。
答案 1 :(得分:0)
您显然也添加了字符串,因为total += months[r][c]
可以是total += months[0][0]
,这将是一个字符串。
相反,您可以执行以下操作:
def total_Rainfall(months):
total = 0
for row in months:
total += row[1] # always use the second column
print('The total rainfall for the year is ', total, ' inches.')
因此,如果我们使用以下数据进行尝试:
months = [
['Jan', 2.3],
['Feb', 3.3],
['Mar', 3.2]
]
total_Rainfall(months)
我们得到:
The total rainfall for the year is 8.8 inches.