2017-03-14 91 views
-1

我想測試Lo Shu Magic Square功能,但是我遇到了一些問題。其中一個問題是我得到一個錯誤消息,指出TypeError:'int'對象不可迭代,但我沒有看到我做錯了什麼。其次,是否有更好的方法來編寫此代碼來檢查lo_shu_square變量是否爲Lo Shu Magic Square?我是Python的新手,但它似乎效率低下。Python Lo Shu Magic

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()