【问题标题】:TypeError: unsupported operand type(s) for +=: 'int' and 'list' retriving a int from a int list类型错误:+= 不支持的操作数类型:'int' 和 'list' 从 int 列表中检索 int
【发布时间】:2018-02-23 12:02:42
【问题描述】:

我收到以下错误:

PrimaryDiagonalSum+=v   

TypeError:+= 不支持的操作数类型:“int”和“list”

我只是想从一个通过映射转换为 int 的列表中检索一个 int。 我究竟做错了什么?

#!/bin/python

import sys


arraySize = int(raw_input().strip())
array = []
for i in xrange(arraySize):
    temp = map(int,raw_input().strip().split(' '))
    array.append(temp)
counterPrimaryDiagonal=0
counterSecondaryDiagonal=arraySize-1
PrimaryDiagonalSum=0
SecondaryDiagonalSum=0
for i in range(arraySize-1):
    v=array[counterPrimaryDiagonal]
    v2=array[counterSecondaryDiagonal]
    PrimaryDiagonalSum+=v
    SecondaryDiagonalSum+=v2
    counterPrimaryDiagonal=counterPrimaryDiagonal+arraySize+1
    counterSecondaryDiagonal=counterSecondaryDiagonal+arraySize-1
print(abs(PrimaryDiagonalSum-SecondaryDiagonalSum))

【问题讨论】:

  • 您希望通过pd += v 实现什么目标?如错误所述,pd 是一个 int,而 v 是一个列表。
  • 有点不相关,但是您是否故意使用完全没有意义的变量名称只是为了混淆读者?有意义的变量名称使代码可读,并且更容易推理可读代码和发现逻辑错误。
  • 如果我使用 a[cp] 仅提取数组 a 的一项,v 怎么会是一个列表?
  • 看看行 v2=a[cs] 它返回相同的错误
  • @brunodesthuilliers 这是黑客等级。部分名称出现在他们身上,并且更正是自动的,无需人工阅读。我可以根据问题更改它。

标签: python


【解决方案1】:

您可以在一次迭代中完成(即不需要 j

abs(sum(array[i][i]-array[i][-i-1] for i in range(len(array))))

【讨论】:

    【解决方案2】:

    问题陈述:

    给定一个大小为 的方阵,计算绝对差 在其对角线之和之间。输入就像第一行矩阵大小, 其他行是由空格分隔的整数矩阵行

    根据上面的说法,可以这样实现:

    import sys
    arraySize = int(raw_input().strip())
    array = []
    for i in range(arraySize):
        temp = list(map(int,raw_input().strip().split(' ')))
        array.append(temp)
    PrimaryDiagonalSum=0
    SecondaryDiagonalSum=0
    for i in range(arraySize):
        for j in range(arraySize):
            if i==j:
                PrimaryDiagonalSum+=array[i][j]
            if (arraySize-1)-i==j:    
                SecondaryDiagonalSum+=array[i][j]
    print(abs(PrimaryDiagonalSum-SecondaryDiagonalSum))
    

    示例输入:

    4
    1 2 3 8
    4 5 6 6
    7 8 9 3
    5 6 9 8
    

    样本输出:

    4
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-08
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      相关资源
      最近更新 更多