2014-03-27 4 views
0

Python3에서 2 개의 숫자 사이에 palindrome 번호를 표시하는 간단한 프로그램을 만들려고하는데 작동하지 않는 것 같습니다. 나는 1,2,4,8 인 4 개의 출력만을 얻습니다. 11, 22, 33, ..., 111, 121,131, ..., 191, 222 등의 다른 숫자들은 어떨까요?Python에서 Palindrome이 작동하지 않습니다.

여기 내 코드입니다. 왜 작동하지 않는지 알 수 없습니다.

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]