Пользовательские строки ввода без учета регистра - PullRequest
1 голос
/ 21 июня 2019

Какую функцию использовать для того, чтобы пользовательские строки ввода не учитывали регистр?

correctAnswer = "London"

userGuess = input("What is the capital of  Great Britain?: ")

if userGuess == "London":
    print("Correct!")
else:
    print("Wrong")

Я пробовал следующие функции после строки:

.lower()
.capitalize()
.casefold()

Вывод все еще «неправильный», хотя ответ должен быть правильным, если введено:
- Лондон
- ЛОНДОН
- ЛОНДОН

И т. Д.

Ответы [ 4 ]

5 голосов
/ 21 июня 2019

При сравнении строк в самом правильном ответе первая буква была заглавной.

correctAnswer = "london"

userGuess = input("What is the capital of  Great Britain?: ").lower()

if userGuess == correctAnswer:
    print("Correct!")
else:
    print("Wrong")
1 голос
/ 21 июня 2019

Я думаю, что ваша проблема в том, что correctAnswer не в нижнем регистре, а с названием .Python не учитывает регистр, но вы можете применить ту же функцию к правильному ответу и userGuess, чтобы сравнить их.

Ваши варианты:

  1. Применить .lower() к correctAnswer
  2. Измените correctAnswer на correctAnswer = "london" и используйте userGuess.lower()
  3. используйте userGuess.title() и correctAnswer = "London"
0 голосов
/ 21 июня 2019

Вы можете попробовать это:

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 () метод преобразует первый символ строки в заглавную (заглавную) букву.

0 голосов
/ 21 июня 2019

При сравнении строк без учета регистра общепринятой практикой является сравнение всех данных со строчными буквами.Фактически, в вашей программе нет смысла сравнивать ввод с London (с заглавной буквой "l"), поэтому вместо этого вы должны сравнить с london.Вы можете сравнить его следующим образом:

correct_answer = "london"
userGuess = input("What is the capital of  Great Britain?: ")
if userGuess.lower() == correct_answer:
    print("Correct!")
else:
    print("Wrong")

NOTE

Я использовал lower() метод в операторе if, а не в операторе ввода.Это лучше, так что вы можете сохранить ввод пользователя как есть, возможно, вы будете использовать его другим способом позже.

...