2017-10-13 20 views
0

私は正方形が魔方陣であるかどうかを識別するプログラムをpythonで作成しようとしています。私は自分のコードがより効率的になることができると理解していますが、私はPythonにはとても新しいです。文字列を整数のリストに変換できません

column_1 = (0,3) 
column_2 = (0,3) 
column_3 = (0,3) 
column_4 = (0,3) 

row_1 = [int(i) for i in input('input row 1 with spaces inbetween numbers: ').split(' ')] 
row_2 = [int(i) for i in input('input row 2 with spaces inbetween numbers: ').split(' ')] 
row_3 = [int(i) for i in input('input row 3 with spaces inbetween numbers: ').split(' ')] 
row_4 = [int(i) for i in input('input row 4 with spaces inbetween numbers: ').split(' ')] 

column_1[0].append(row_1[0]) 
column_1[1].append(row_2[0]) 
column_1[2].append(row_3[0]) 
column_1[3].append(row_4[0]) 

column_2[0] = row_1[1] 
column_2[1] = row_2[1] 
column_2[2] = row_3[1] 
column_2[3] = row_4[1] 

column_3[0] = row_1[2] 
column_3[1] = row_2[2] 
column_3[2] = row_3[2] 
column_3[3] = row_4[2] 

column_4[0] = row_1[3] 
column_4[1] = row_2[3] 
column_4[2] = row_3[3] 
column_4[3] = row_4[3] 

diagonal_left_to_right[0] = column_1[0] 
diagonal_left_to_right[1] = column_2[1] 
diagonal_left_to_right[2] = column_3[2] 
diagonal_left_to_right[3] = column_4[3] 

diagonal_right_to_left[0] = column_4[0] 
diagonal_right_to_left[1] = column_3[1] 
diagonal_right_to_left[2] = column_2[2] 
diagonal_right_to_left[3] = column_1[3] 

sum_row_1 = sum(row_1) 
sum_row_2 = sum(row_2) 
sum_row_3 = sum(row_3) 
sum_row_4 = sum(row_4) 

sum_col_1 = sum(column_1) 
sum_col_2 = sum(column_2) 
sum_col_3 = sum(column_3) 
sum_col_4 = sum(column_4) 

sum_dag_l2r = sum(diagonal_left_to_right) 
sum_dag_r2l = sum(diagonal_right_to_left) 

if sum_row_1 == sum_row_2 == sum_row_3 == sum_row_4 == sum_col_1 == sum_col_2 == sum_col_3 == sum_col_4 == sum_dag_r2l == sum_dag_l2r: 
    print('magic') 

else: 
    print('not magic') 

私はオブジェクトが属性「を追加」 私はこのウェブサイト上で見つけるの異なる方法の多くを試してみましたが、それらのどれもが、様々な理由のために働いていないを持っていない「int型」というエラーメッセージを取得しておきます。 私はすべての提案に開放されています、何かが私を助けます。 ありがとう

+0

COLUMN_1はタプルであり、あなたのこれは完全に働いたことに何かを追加しようとしている –

答えて

0

最初にcolumn_1をタプル(2つの整数値、インデックス0に1つ、インデックス1に1つ)として定義します。 appendメソッドは、0.append()のようなcolumn_1[0]では機能しません。たぶんタプルを作成するつもりはありませんでしたが、特定の次元のリストを作成することは多分でした。

あなたはこのリスト記法と列と対角線に値を割り当てることができます。

column_1 = [row_1[0], row_2[0], row_3[0], row_4[0]] 
column_2 = [row_1[1], row_2[1], row_3[1], row_4[1]] 
column_3 = [row_1[2], row_2[2], row_3[2], row_4[2]] 
column_4 = [row_1[3], row_2[3], row_3[3], row_4[3]] 
diagonal_left_to_right = [column_1[0],column_2[1],column_3[2],column_4[3]] 
diagonal_right_to_left = [column_4[0],column_3[1],column_2[2], column_1[3]] 
+0

助け –

+0

に感謝をすることを忘れないでください[回答を受け入れたものとしてマークする](http://stackoverflow.com/help/someone-answers)。 – trincot

関連する問題