2013-02-28 2 views
0

Я пытаюсь определить палиндром. Это то, что у меня есть до сих пор, но я не уверен, что будет дальше, кто-то может помочь мне.Как определить палиндром

def palindrome(x): 

    if x % 2==0: 
     index1=0 
     index2=0 
     aString=str(x) 
     number=len(aString) 
     index1=number/2 
     index2=number/2 -1 
    else: 
     index1=0 
     index2=0 
     aString=str(aString) 
     number=len(aString) 
     index1=number/2 +1 
     index2=number/2 -1 
+1

Что вы имеете в виду «определить палиндром»? Вы проверяете, является ли x палиндром? Его трудно понять ваш код, потому что есть некоторые строки, которые не запускаются (aString = str (aString)). – sfendell

+0

Если вы проверяете, что строка является палиндром, тогда вы можете просто выполнить 'x [:: - 1] == x'. В противном случае неясно, каков ваш вопрос. –

+1

Палиндромы обычно игнорируют разницу в пробелах и пунктуации. «Человек, план, канал - Панама!» –

ответ

2

Вы можете просто попробовать что-то вроде этого:

sampleString[::-1] == sampleString 
1

Попробуйте это:

def palindrone(x): 
    return x == x[::-1] 

Например:

>>palindrone("dad") 
True 
1

Для проверки, если слово/строка палиндром, этого достаточно, хотя как others have pointed out, это память дорогое решение:

def ispal(s): 
    return s == s[::-1] 

Чтобы проверить, является ли число палиндром, существует несколько решений (и мой список отнюдь не является исчерпывающим):

import math 

def ispal(n): 
    return str(n) == str(n)[::-1] 

def ispal2(n): 
    digits = math.floor(math.log10(n) + 1) 
    for ex in range(1, math.ceil(digits/2)): 
     leftdigit = math.floor(n/10**(digits - ex)) % 10 
     rightdigit = math.floor(n/10**(ex - 1)) % 10 
     if not(leftdigit == rightdigit): 
      return False 

    return True 
Смежные вопросы