#python
Вопрос:
впервые публикуюсь, новичок в программировании. Проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю свою функцию Pangram и превращаю входную строку в список наборов, в списке все еще есть несколько букв «t», но ни одной из других букв. когда я ввожу «Быстрая коричневая лиса перепрыгивает через ленивую собаку», когда мой код превращает это в организованный список, соответствующий алфавиту, там 2 буквы. Как вы можете видеть, я использую печать, чтобы увидеть, что все делает
[«a», «b», «c», «d», «e», «f», «g», «h», «i», «j», «k», «l», «m», «n», «o», «p», «q», «r», «s», «t», «t», «u», «v», «w», «x», «y», «z»]
выше указано, во что преобразуется моя входная строка, и есть 2 буквы «т», но все остальные несколько букв исчезли. Я также попытался сделать верхнюю букву T нижней буквой вручную, а также сделать другую случайную букву верхней, и у нее нет проблем с другими буквами.
def ispangram(str1, alphabet=string.ascii_lowercase):
str1 = str1.replace(' ','')
str1 = list(set(str1))
str1 = [letter.lower() for letter in str1]
str1.sort()
print(str1)
alphabet = list(set(alphabet))
alphabet.sort()
print(alphabet)
if str1 == alphabet:
return 'Is Pangram!'
else:
return 'Is not Pangram!'
Комментарии:
1. Строчные буквы, прежде чем вы сделаете их набором…
Ответ №1:
Вы преобразуете свою строку в нижний регистр после сбора набора, вы должны сделать ее строчной перед набором
str1 = list(set(str1.lower()))
Комментарии:
1. Спасибо! никогда не понимал, что это важно, предполагал, что я могу писать в нижнем регистре в любой момент, как мы видим.
Ответ №2:
Вы строите символы в нижнем регистре после построения set
, поэтому T
и t
считаетесь разными.
Вместо этого в нижнем регистре перед построением set
:
def ispangram(str1, alphabet=string.ascii_lowercase):
str1 = str1.replace(' ','')
str1 = [letter.lower() for letter in str1]
str1 = list(set(str1))
str1.sort()
print(str1)
Или гораздо более коротким способом:
def ispangram(str1, alphabet=string.ascii_lowercase):
str1 = sorted(set(str1.replace(' ','').lower()))
Комментарии:
1. Спасибо! более короткий путь выглядит чище, раньше я не видел эту функцию » сортировка ()». как вы можете видеть, в данный момент я занимаюсь основными вещами.