【解決方法】やあみんな、こことPythonの初心者です。明日試験があります。あなたの助けが必要です。ありがとう。


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

見積もり:
Python
m=array(([[int]*x]*x))

これにより、各要素が次のように初期化された 6×6 配列が作成されます <class 'int'>.

最初の 3 行の最初の 3 列と、4 行目の最初の 2 列のみを設定します。 他のすべての値は、デフォルト値の <class 'int'>.

次に、追加しようとします int<class 'int'>、サポートされていない操作です。

配列宣言を次のように変更します。

Python
m=array(([[0]*x]*x))

コードは正常に実行されます。 期待される答えが得られるかどうかはあなた次第です。すべての要素を設定しているわけではなく、一部の要素を 2 回設定しているので、配列の初期化コードを確認する必要があることをお勧めします。

コメント

タイトルとURLをコピーしました