Où est le bug dans cette fonction pour vérifier palindrome?
Donné ci-dessous est le code pour vérifier si une liste est un palindrome ou non. Il donne des résultats corrects pour 983. Où vais-je tort?
def palindrome(num):
flag=0
r=num[::-1]
for i in range (0, len(num)-1):
if(r[i]==num[i]):
flag=1
else:
flag=0
return flag
Ce qui se passe lorsque vous exécutez votre programme? Ne vous obtenez une erreur? Si oui, quelle est l'erreur? Si non, en quoi la sortie diffèrent de ce que vous attendez?
OriginalL'auteur Prakhar Mohan Srivastava | 2013-10-14
Vous devez vous connecter pour publier un commentaire.
Vous devez retourner dès qu'il y a un décalage. Aussi, vous avez juste besoin d'itérer jusqu'à la moitié de la longueur:
BTW, vous n'avez pas besoin de cette boucle. Vous pouvez tout simplement faire:
Il inverse la séquence
num
. Regarder dehors pour la tranche étendue de la notation.OriginalL'auteur Rohit Jain
Ce serait plus facile:
Je déteste
if True:return True ...
Je suppose que c'est juste personnel style de codage, je pense que c'est plus clair de cette façon.
OriginalL'auteur Synthetica
Votre
for
boucle vérifie toutes les paires de caractères, peu importe si elle a trouvé l'inadéquation ou pas. Ainsi, en cas de chaîne '38113' il sera de retourTrue
, parce que leflag
variable sera mis àTrue
après la vérification de l'égalité du dernier chiffre dans "38113" et sa version inversée '31183 (à la fois égal à 3, alors que la chaîne n'est pas un palindrome).Donc, vous avez besoin de retourner
False
droit après que vous avez trouvé mismatch, si vous avez vérifié tous les personnages et ne pas trouver il - puis revenirTrue
, comme suit:Aussi, comme quelqu'un l'a souligné, il sera mieux d'utiliser python tranches - découvrez le la documentation.
OriginalL'auteur aga
Juste pour mémoire, et pour ceux qui sont à la recherche pour plus de façon algorithmique afin de valider si une chaîne donnée est palindrome, deux façons d'atteindre le même (à l'aide de
while
etfor
boucles):Et....la seconde:
OriginalL'auteur Jorge E. Hernández
OriginalL'auteur ankita
OriginalL'auteur Anupam Thakur
ce serait beaucoup plus facile:
OriginalL'auteur user8211857
Ici, à mon avis, est le plus élégant:
c'est aussi le même code dans la is_palindrome() fonction:
Prendre soin de noter le trait d'union vs souligner lors de l'installation contre l'importation de
OriginalL'auteur
OriginalL'auteur D S Tejendra
OriginalL'auteur user3459183