[ad_1]
This program is supposed to: put the sum of the numbers up the diagonal in a variable and the ones under the diagonal in another variable and the ones on the diagonal in another variable.
from numpy import * x=6;m=array(([[int]*x]*x)) m[0,0]=0 m[0,1]=1 m[0,2]=2 m[1,0]=3 m[1,1]=4 m[1,2]=5 m[2,0]=6 m[2,1]=7 m[2,2]=8 m[3,0]=0 m[3,1]=1 m[0,2]=2 m[1,0]=3 m[1,1]=4 m[1,2]=5 m[2,0]=6 m[2,1]=7 m[2,2]=8 print(m) def aff(m,x): s1=0 s2=0 s3=0 for i in range(x): for j in range(x): if j<i: s2=s2+m[i,j] elif j>i : s1=s1+m[i,j] else: s3=s3+m[i,j] return s1,s2,s3 aff(m,x)
問題はこの合計式にあります。
s2=s2+m[i,j]
それは言う
s1=s1+m[i,j] TypeError: unsupported operand type(s) for +: 'int' and 'type'
私が試したこと:
みんなに聞いて、私は新しい魂を見つけられませんでした
解決策 1
見積もり:Pythonm=array(([[int]*x]*x))
これにより、各要素が次のように初期化された 6×6 配列が作成されます <class 'int'>
.
最初の 3 行の最初の 3 列と、4 行目の最初の 2 列のみを設定します。 他のすべての値は、デフォルト値の <class 'int'>
.
次に、追加しようとします int
に <class 'int'>
、サポートされていない操作です。
配列宣言を次のように変更します。
Python
m=array(([[0]*x]*x))
コードは正常に実行されます。 期待される答えが得られるかどうかはあなた次第です。すべての要素を設定しているわけではなく、一部の要素を 2 回設定しているので、配列の初期化コードを確認する必要があることをお勧めします。
[ad_2]
コメント