Короче говоря : проверка без учета регистра гораздо сложнее, чем кажется на первый взгляд.Функция str.casefold()
[python-doc] должна генерировать строку для таких сравнений.
Вы проверяете, является ли .casefold()
введенной строкито же самое, что .casefold()
строки для угадывания, например:
secret_word = 'korea'
guess_count = 0
guess_limit = 3
while guess_count < guess_limit:
guess = input('Guess a word')
if <b>guess.casefold() == secret_word.casefold()</b>:
break
else:
guess_count += 1
if guess_count < guess_limit:
print('You win')
else:
print('You lose')
Предполагается, что .casefold()
по стандарту Unicode для получениястрока, которую можно сравнивать для нечувствительных к регистру сравнений.Например, на немецком языке eszett ß [wiki] отображается в верхнем регистре на:
>>> 'ß'.lower()
'ß'
>>> 'ß'.upper()
'SS'
>>> 'SS'.lower()
'ss'
>>> 'ß'.lower() == 'SS'.lower()
False
, тогда как .casefold()
возвращает ss
:
>>> 'ß'.casefold()
'ss'
>>> 'ss'.casefold()
'ss'
>>> 'ß'.casefold() == 'SS'.casefold()
True
Сравнение без учета регистра оказывается сложной проблемой, поскольку некоторые символы не имеют прописных / строчных букв и т. Д.