2017-05-04 81 views
-2

我不知道我在哪裏出錯,我嘗試了很多其他的方式來放置它,但我仍然得到一個錯誤。不支持的歌劇類型爲+:'int'和'list'

"if sum([r]) == sum(r[c] for r in Square_1): TypeError: unsupported operand type(s) for +: 'int' and 'list'"


def main(): 

    Square_1 =[[[] for r in range(3)] for c in range(3)] 
    for r in range(3): 
     for c in range(3): 
      User_Input=int(input("Please Enter number :")) 
      Square_1[r][c]= User_Input 

      if sum([r]) == sum(Square_1[c][c] for c in range(1)): 

       if sum([r]) == sum(r[c] for r in Square_1): 
        LoShuMagic = str('is a Lo Shu Magic Square!') 
      else: 
       LoShuMagic = str('is not a Lo Shu Magic Square :(') 

    print(Square_1) 

main() 

回答

0

我會向你爲什麼出現錯誤解釋。

比方說User_Input是42

在第一次迭代時,即當rc爲零,sum(r[c] for r in Square_1)試圖計算的[42, [], []]總和。 Python不知道42 + []應該是什麼,並拋出TypeError

修復你的程序超出了這個問題 - 答案格式的範圍,因爲通過瀏覽你的代碼,我有強烈的印象,你需要閱讀Python Tutorial

我也強烈建議您閱讀How to debug small programs,因爲所有我必須要做的才能找出錯誤的原因是逐步地逐步完成指示。你可以做同樣的事情。

+0

謝謝你的迴應。 –

0

您的代碼有幾個問題。首先,將sum([r])更改爲sum(r)r已經是一個列表,不需要像代碼那樣將其放入另一個列表中。這就是第一個TypeError發生的地方。在獲得用戶輸入看起來像這樣[1, 2, 3]之後,我們假設r。在你的代碼中,Python試圖計算[[1, 2, 3]]的總和,即1 + 2 + 3 +[]。您有兩種不同的類型:不能相互添加的列表和整數。 timgeb描述的另一個TypeError類似於上面提到的錯誤。

而且,你不需要明確啓用字符串轉換成字符串喜歡這裏:

str('is a Lo Shu Magic Square!') 

它已經是一個字符串。

相關問題