Python-负数未加,但正数会加

时间:2018-08-02 01:25:10

标签: python-3.x

我应该将所有数字的行和总计加起来。我可以很好地添加总计,但是我无法添加仅包含负数的行。以下代码将正数相加,但不能正确地将负数相加。

grandTotal = 0
sumRow = 0

for x in range(len(numbers)): 
  sumRow = (sumRow + x)
  print(sumRow)

for x in range(len(numbers)):
  for y in range(len(numbers[x])):
    grandTotal = grandTotal + int(numbers[x][y])

print(grandTotal)

当用户输入为:

1,1,-2 -1,-2,-3 1,1,1

我的输出是:0 1个 3 -3

而不是:0 -6 3 -3

我知道它与第一个for循环有关,但我无法弄清楚。当我尝试这个:

grandTotal = 0
sumRow = 0

for x in range(len(numbers)): 
  sumRow = (sumRow + (numbers[x]))
  print(sumRow)

for x in range(len(numbers)):
  for y in range(len(numbers[x])):
    grandTotal = grandTotal + int(numbers[x][y])

print(grandTotal) 

我收到错误消息:

File "list.py", line 14, in 
sumRow = (sumRow + (numbers[x]))
TypeError: unsupported operand type(s) for +: 'int' and 'list'

为什么我的代码没有加负数?任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

你在哪里说

sumRow = (sumRow + (numbers[x]))

要添加整数,您说1 + 1,而不是(1+(1)),这将添加到列表中,因此您可以更改它。 根据我的理解,数字也是一个数组,所以说

numbers[x]

会给你很多数字。您想要的是每一行的总数,以及所有行的总数。这是一个执行此操作的程序。我假设您的程序会自动从用户输入中获取数字。

grandTotal = 0
for row in numbers:
    #for each row we find total amount
    rowTotl = 0
    for value in row:
        #for each column/ value we add tot the row total
        rowTotl += value
    print(rowTotl)
    #add this row's value to the grandTotal before we move on
    grandTotal += rowTotl
#After all adding we print grand total
print(grandTotal)

您的程序不添加负数的原因,实际上是因为行总计根本没有添加数字。他们只是添加索引,而不是值,因此它们也不适用于正数。总计之所以有效,是因为您要正确添加所有值,而不是添加索引。仅供参考,

for index in range(len(numbers)) :

不给您值,而是:0,1,2,3,4,5,6 ...(索引)直到范围的末尾,以获得您将要执行的值数字

for value in numbers: