2016-06-10 59 views
-4

因爲我只是一個初學者,所以我可能犯了很多錯誤。但有人請幫助我嗎?目標是打印由兩個3位數字產品製成的最大回文。謝謝。歐拉項目:最大的迴文(Python)。我做錯了什麼?

palindromes = [] 
for i in range(100, 1000): 
    for x in range(100, 1000): 
     a = x*i 
     str(a) 
     b = a[::-1] 
     if a == b : 
      palindromes.append(a) 

print (palindromes[len(palindromes) - 1]) 
+1

範圍(100,1000)',並且x後'丟失結腸沒有定義。哪個項目精確(數字)是這個用於? – Keatinge

+0

@Keatinge我在實際的代碼中做了這些事情。我只是在這裏忘了他們。這是檔案中的第四個問題。 – dsi411

+0

歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve)適用於此處。在您發佈代碼並準確描述問題之前,我們無法有效幫助您。該代碼仍然不運行;你沒有提供錯誤信息。 – Prune

回答

0

基本點:

  • 當你轉換爲數字爲字符串,你必須存儲結果。
  • 完成後對列表進行排序。
  • 使用右端索引來獲得最後一個元素
  • 當你找到一個迴文,保持整數形式,所以排序工作正常。否則,你會得到'99999'作爲最大的迴文。

代碼:

palindromes = [] 
for i in range(100, 1000): 
    for x in range(100, 1000): 
     a = str(x*i) 
     b = a[::-1] 
     if a == b : 
      palindromes.append(int(a)) 

print (sorted(palindromes)[-1]) 
+0

非常感謝!這工作! – dsi411

+0

太棒了!記得投票有用的答案,並接受你最喜歡的。這允許SO正確地存檔問題。 – Prune

2

在定義它之前,您在代碼中使用了x,因此您將在該代碼中出現錯誤。您還有其他錯誤:您應該能夠使用回溯來輕鬆找到它們。一個邏輯錯誤是你找到了a的字符串,但不要將它存儲在任何地方,所以它會丟失。你也可以用a作爲整數開始,然後嘗試使它成爲一個字符串:除非你有一個很好的理由來改變類型,否則將你的類型分開。你應該使用更好的變量名稱:a,b,i,x是糟糕的名字。寫下他們的意思!鍵入更多的字符很便宜,並且可以防止錯誤。

每個迴文必須三位數字的產品,所以你需要在range(100, 1000) 嵌套循環。使用x作爲你的其他循環變量,你不需要更改你的代碼。

+0

哦,是的,我確實有另一個for循環for x,但我忘了把它。我會補充一點。謝謝。我將a改爲一個字符串,以便我可以將其反轉。 – dsi411

0

打印前,添加一行:

palindrome.sort()