À l'aide de Python, à l'inverse d'un entier, et dites si palindrome
À l'aide de Python, à l'inverse d'un entier et de déterminer si c'est un palindrome. Voici ma définition de l'inverse et palindrome. Puis-je avoir une bonne logique?
def reverse(num):
s=len(num)
newnum=[None]*length
for i in num:
s=s-1
newnum[s]=i
return newnum
def palindrome(num):
a=str(num)
l=len(z)/2
if a[:1]==a[-1:][::-1]:
b=True
else:
b=False
Je vais avoir quelques difficultés à écrire def main
.
Quel est le problème avec le code que vous avez? N'est-il pas de travail?
J'ai fait de la def partie principale, mais il me dit que mon entrée n'a pas de len.
Quelle partie? Post le traceback pour l'erreur.
Vous êtes de passage d'un entier à
J'ai fait de la def partie principale, mais il me dit que mon entrée n'a pas de len.
Quelle partie? Post le traceback pour l'erreur.
Vous êtes de passage d'un entier à
reverse()
. Les entiers n'ont pas de "longueur", seules les chaînes et les séquences ont des longueurs.OriginalL'auteur YXH | 2012-10-24
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas que les nombres négatifs peuvent être considérés comme des palindromes
OriginalL'auteur Peter Hull
Des nombres entiers n'ont pas len().
Tester si un nombre est un palindrome est aussi simple que de tester si le nombre est égal à son inverse (mais si vous voulez un maximum d'efficacité, vous pouvez simplement comparer les caractères des deux extrémités de la corde jusqu'à ce que vous atteignez le milieu).
Pour trouver l'inverse d'un nombre entier, vous pouvez soit le faire à la dure (à l'aide de mod % et entier de la division de la //de trouver chaque chiffre et de construire à l'inverse de nombre):
Ou la voie de la facilité (en tournant le nombre en chaîne de caractères, à l'aide de la tranche de notation pour inverser la chaîne et en le tournant d'un entier):
Merci pour le commentaire, mais je ne sais pas si tu sous-entends que le concept d'inversion d'un nombre se terminant par 0 n'est pas défini (je pense 321 == 0321 est une bonne définition de l'inverse du nombre 1230), ou si ma méthode ne peut pas gérer de tels numéros. Si c'est le dernier, je crois qu'il peut. Si vous faites référence à l'utilisation de ce test pour palindromicity, les nombres se terminant par 0 ne peut pas être palindromes (à l'exception notable de 0), et à l'inverse de ce nombre, selon ma définition, c'est toujours différent de l'original, de sorte que nous sommes cool, il y trop à, droite?
Je suppose que la question que je visais, c'est que l'inverse(1230) == reverse(123), puisque les deux de retour 321. Mais c'est un problème qui vient avec chaque méthode. J'ai donc l'inconvénient que je faisait remarquer n'est pas très pertinent.
J'ai écrit un récursive de la mise en œuvre dérivé en partie de cette réponse.
OriginalL'auteur pedrosorio
C'est illisible d'une ligne récursive de mise en œuvre basé en partie sur le réponse par pedrosorio.
Il travaille pour l'entier
i ≥ 0
.Noter que
reverse(123) == reverse(1230) == 321
. Ce n'est pas un problème, compte tenu de toute valeur non nulle en entier qui se termine par 0 n'est pas un palindrome de toute façon.Note également que le renversement complet de l'entier peut bien sûr pas nécessaire de déterminer si c'est un palindrome. L'annulation peut être mis en œuvre de manière à être abandonnée au début si le nombre est déterminé à ne pas être un palindrome.
OriginalL'auteur A-B-B
Long mais lisible:
OriginalL'auteur elon007
OriginalL'auteur rashedcs
J'ai utilisé une liste de ce programme, des œuvres avec des cordes trop.
OriginalL'auteur Arian
OriginalL'auteur Devzzone
Ce code convertit int en String, puis vérifie si la chaîne est pallindrome. L'avantage est qu'il est rapide, l'inconvénient étant qu'il convertit en int en String, ce qui compromet la solution parfaite à la question.
Il gère
negative int
.OriginalL'auteur casillas
J'essaie de sortir avec moi-même.
OriginalL'auteur blackstreet23
OriginalL'auteur ankit bansal