我收到以下错误:
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))
答案 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))))