TypeError:+ =的不支持的操作数类型:' int'和'列出'从int列表中检索int

时间:2017-09-14 13:14:57

标签: python

我收到以下错误:

PrimaryDiagonalSum+=v   

TypeError:+ =的不支持的操作数类型:' int'和'列出'

我只是想从通过映射转换为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))

2 个答案:

答案 0 :(得分:0)

问题陈述:

  

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

基于上述陈述,可以实现如下:

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

答案 1 :(得分:0)

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

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