2017-03-14 4 views
-1

私は本当にシュウマジックスクエア機能をテストしようとしていますが、私はいくつかの問題に実行しています。 「int型のオブジェクトが反復可能ではありませんが、私は私が間違っているのか見ていない:問題の一つは、私は例外TypeErrorが言うエラーメッセージを取得していますということです。次に、lo_shu_square変数がLo Shu Magic Squareであるかどうかをチェックするために、このコードを書く方がより効率的な方法がありますか?私はPythonにnewbですが、それは単に効率が悪いようです。Pythonのロー舒淇マジック

ROWS = 3 
COLUMNS = 3 

def magic(): 
    lo_shu_square = [[8, 1, 6],[3, 5, 7],[4, 9, 2]] 
    for r in range (ROWS): 
     for c in range (COLUMNS): 
      if sum(r) == sum (lo_shu_square[c][c] for c in range(COLUMNS)): 
       if sum(r)== sum(r[c] for r in lo_shu_square): 
        answer_output = str('a Lo Shu Magic Square') 
      else: 
       answer_output = str('not a Lo Shu Magic Square') 

    print("The inputs are", answer_output) 

magic() 

エラーメッセージ:

if sum(r) == sum (lo_shu_square[c][c] for c in range(COLUMNS)): 
TypeError: 'int' object is not iterable 
+1

'r'はint型の数値で、' int'型の数値に対して 'sum'関数を呼び出すことはできません。 – Arman

答えて

-1

おかげ@Arman!それは簡単な修正でした。

COLUMNS = 3 

def magic(): 
    lo_shu_square = [[8, 1, 6],[3, 5, 7],[4, 9, 2]] 
    for r in lo_shu_square: 
     for c in range (COLUMNS): 
      if sum(r) == sum (lo_shu_square[c][c] for c in range(COLUMNS)): 
       if sum(r)== sum(r[c] for r in lo_shu_square): 
        answer_output = str('a Lo Shu Magic Square') 
      else: 
       answer_output = str('not a Lo Shu Magic Square') 

    print("The inputs are", answer_output) 

magic() 
関連する問題