2017-03-14 95 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()