2014-03-27 31 views
0

我想做一個簡單的程序,顯示在Python3中的2個數字之間的迴文數字,但它似乎並沒有工作。我只有4個輸出1,2,4和8,其他數字如11,22,33,...,111,121,131,...,191,222等等呢?在Python中的迴文不工作

這是我的代碼。我無法弄清楚它爲什麼不起作用。

a = 0 
b = 500 
a += 1 
for i in range(a,b): 
    if(str(a) == str(a)[::-1]): 
     print(a) 
     a += a 

回答

2

也許

for i in range (0, 500): 
    if str(i) == str(i)[::-1]: 
     print(i) 
+0

那愚蠢的錯誤。非常感謝。如果我看了一個小時,我就不會看到這個了。 –

1
>>> palindromes = [a for a in range(500) if str(a) == str(a)[::-1]] 
>>> palindromes 
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, 131, 
141, 151, 161, 171, 181, 191, 202, 212, 222, 232, 242, 252, 262, 272, 282, 292, 303, 
313, 323, 333, 343, 353, 363, 373, 383, 393, 404, 414, 424, 434, 444, 454, 464, 474, 
484, 494] 

那說明你的原則。如果你想要做一個功能,您可以用yield,而不是構建在內存中的整個列表(更有效):

>>> def palindromes(a, b):             
... """Return palindromes in closed interval from a to b"""    
... for i in range(a, b):             
...  if str(i) == str(i)[::-1]:           
...  yield i               
...                   
>>> list(palindromes(0, 500))            
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101, 111, 121, 131, 141, 151, 161, 171, 181, 191, 202, 212, 222, 232, 242, 252, 262, 272, 282, 292, 303, 313, 323, 333, 343, 353, 363, 373, 383, 393, 404, 414, 424, 434, 444, 454, 464, 474, 484, 494]