вторник, 14 января 2014 г.

Python нахождение числового палиндрома

"А роза упала на лапу Азора" - палиндром, 131 - числовой палиндром.
Решение: число представляю в виде строки, прохожу по циклу от 0 до половины размера строки и сравниваю последовательно симметрично i и -(i +1). Все одинаковые значения добавляются в список и в конце сравниваю размер списка с половиной размера строки. Если равны - то палиндром.
Дебаг:
x = 1234321
for i in xrange(len(str(x)) // 2):    
    if str(x)[i] == str(x)[-(i + 1)]:
        print str(x)[i] 
Привожу в однострочник:
if len([i for i in xrange(len(str(x)) // 2) if str(x)[i] == str(x)[-(i + 1)]]) == len(xrange(len(str(x)) // 2)):
    print 'Палиндром'

Или красивое решение :)
def isPalindrom(n):
    """
    Check integer for palindrom
    >>> isPalindrom(131)
    True
    >>> isPalindrom(130)
    False
    """
    return str(n) == str(n)[::-1]

1 комментарий:

  1. спасибо разобрался, нашел еще способ интересный https://pythononline.ru/question/palindrom-iz-podstroki-v-python

    ОтветитьУдалить