Quelle fonction utiliser pour rendre les chaînes de saisie utilisateur insensibles à la casse?
.lower() .capitalize() .casefold()
J'ai essayé les fonctions suivantes après la chaîne:
correctAnswer = "London" userGuess = input("What is the capital of Great Britain?: ") if userGuess == "London": print("Correct!") else: print("Wrong")
Le résultat est toujours 'faux' bien que la réponse devrait être correcte quand l'entrée est:
- Londres
- lOndoN
- loNDON
Et ainsi de suite ..
4 Réponses :
Dans votre comparaison de chaînes, la bonne réponse elle-même avait la première lettre en majuscule.
correctAnswer = "london" userGuess = input("What is the capital of Great Britain?: ").lower() if userGuess == correctAnswer: print("Correct!") else: print("Wrong")
Plus clair (mais moins optimal) serait probablement si userGuess.lower () == correctAnswer.lower ()
Je pense que votre problème est que correctAnswer
n'est pas en minuscules, mais intitulé . Python ne fait pas d'insensibilité à la casse, mais vous pouvez appliquer la même fonction à la bonne réponse et userGuess pour les comparer.
Vos options sont:
.lower ()
à correctAnswer
correctAnswer
par correctAnswer = "london"
et utilisez userGuess.lower()
userGuess.title ()
et correctAnswer = "Londres"
Lors de la comparaison de chaînes insensibles à la casse, il est courant de toutes les comparer avec des minuscules.
En fait, dans votre programme, il est inutile de comparer l'entrée avec Londres
(avec un «l» majuscule), c'est pourquoi vous devriez plutôt comparer avec london
.
La façon dont vous pouvez le comparer est la suivante:
correct_answer = "london" userGuess = input("What is the capital of Great Britain?: ") if userGuess.lower() == correct_answer: print("Correct!") else: print("Wrong")
REMARQUE
J'ai utilisé la méthode lower ()
dans l'instruction if n'est pas dans l'instruction d'entrée. C'est mieux pour que vous puissiez conserver les commentaires de l'utilisateur tels quels, peut-être que vous les utiliserez d'une autre manière plus tard.
Vous pouvez essayer ceci: La méthode
correctAnswer = "London" userGuess = input("What is the capital of Great Britain?: ") userGuess = userGuess.capitalize() #print(userGuess) if userGuess == correctAnswer: print("Correct!") else: print("Wrong")
capitalize () convertit le premier caractère d'une chaîne en majuscule (majuscule).
Vous devez changer les deux pour la même casse:
if userGuess.lower () == "London" .lower ():
OU utiliseztitle
par exemple:si userGuess.title () == "Londres":