Donc, j'écris un code pour vérifier si la chaîne entrée est un palindrome ou non, j'ai écrit le code suivant, mais cela ne fonctionne pas correctement, par exemple, si je saisis "race", il dit toujours VRAI, bien qu'il devrait dire FAUX, veuillez aider. C'est le code

string = input("Please enter any word: ")
a = 0
string_length = len(string)
for string_index in range(string_length-1, -1, -1):
    character = string[string_index]
    if string[a] == character:
        a = a + 1
        b = "TRUE"
    else:
        b = "FALSE"
print(b) 
1
Mehdi Rizvi 15 avril 2018 à 13:46

3 réponses

Meilleure réponse

Le bon code:

a = 0
string_length = len(string)
for string_index in range(string_length-1, -1, -1):
    character = string[string_index]
    if string[a] == character:
        a = a + 1
        b = "TRUE"
    else:
        b = "FALSE"
        break;  # this line was missing
print(b) 
2
Pang 17 avril 2018 à 04:32
string = input("Please enter any word: ")
string_length = len(string)
start_index = 0
count = 0 
end_index = string_length - 1
for string_index in range(int(string_length/2)):
    if string[start_index] == string[end_index]:
        start_index = start_index + 1
        end_index = end_index - 1
        count += 1
    else:
        pass
print("Palendrome") if count == int(string_length/2) else print("Not Palendrome")

Explication: Pour vérifier la chaîne palendrome, comparez le premier et le dernier caractère jusqu'à la comparaison arrive au milieu de la chaîne

for string_index in range(int(string_length/2)):

Comparer le premier caractère et le dernier caractère:

if string[start_index] == string[end_index]:

Mettez à jour start_index et end_index et comptez:

start_index = start_index + 1
end_index = end_index - 1
count += 1

Si le nombre est égal à la moitié de la longueur de la chaîne, c'est certainement un Palendrome

print("Palendrome") if count == int(string_length/2) else print("Not Palendrome")
0
kvmahesh 15 avril 2018 à 12:12

En plus de cette réponse de מתן ל:

Vous pouvez facilement comparer votre entrée avec elle-même lorsqu'elle est inversée - la compréhension de la liste rend cela trivial:

Test simple en un mot et sensible à la casse:

word = "SomemoS"
print(word == word[::-1])  # word[::-1] simply reverses the word and prints True if same

Insensible à la casse et autorisant la ponctuation

Un palindrom est lisible des deux côtés. En fonction des règles de palindrome, vous pouvez autoriser le boîtier ignoré et même éliminer les espaces blancs et les signes de ponctuation.

  • lui appliquer lower()
  • ne se soucient pas des espaces et de la ponctuation

word = [c.lower() for c in "No, it can assess an action." if c not in ',. !?']
print(word == word[::-1])  # True as well
2
Patrick Artner 15 avril 2018 à 11:19