当第一列填充字符串时,将第二列添加到列表列表中

时间:2018-11-08 03:21:26

标签: python

我已经奋斗了几天,以访问列表中的第二列并汇总浮动信息。

  1. 这是我这学期的最后一个实验作业。是的,这是家庭作业。是的,我已经用尽了所有选择。
  2. 这时我的大脑很闷。

列表中的第一列有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#中处理了多维列表。我到底在想什么!

我不是在寻找答案。我正在寻找正确方向的指导。希望我提供了足够的信息。我很确定自己会错过一些非常简单的事情,最后我会给自己打耳光。请帮忙!我显然对此考虑过度。

注意:不能为此使用预先存在的库。有点违反任务的目的。

2 个答案:

答案 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.