1
votes

Chaînes d'entrée utilisateur insensibles à la casse

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 ..


1 commentaires

Vous devez changer les deux pour la même casse: if userGuess.lower () == "London" .lower (): OU utilisez title par exemple: si userGuess.title () == "Londres":


4 Réponses :


5
votes

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")


1 commentaires

Plus clair (mais moins optimal) serait probablement si userGuess.lower () == correctAnswer.lower ()



1
votes

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:

  1. Appliquer .lower () à correctAnswer
  2. Remplacez correctAnswer par correctAnswer = "london" et utilisez userGuess.lower()
  3. utilisez userGuess.title () et correctAnswer = "Londres"

0 commentaires

0
votes

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.


0 commentaires

0
votes

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).


0 commentaires