Эта строка проблематична:
if i == letter:
Вы присвоили letter
строку, содержащую все строчные буквы, через string.ascii_lowercase
. Но i
- это всего лишь одна буква. Вместо этого вы можете использовать:
if i in letter:
# ...
Проверка принадлежности строки занимает O ( n ) время. Вы можете использовать set
, чтобы заранее уменьшить это значение до O (1) с помощью преобразования:
letter = set(string.ascii_lowercase)
Затем вам нужно отменить порядок ваших if
выписок, чтобы проверка на search_letter
имела приоритет. В противном случае, если search_letter
существует в letter
, второе условие никогда не будет выполнено.
for i in phrase:
if i == search_letter:
count_letters = count_letters + 1
count_occurance = count_occurance + 1
elif i in letter:
count_letters = count_letters + 1
Обратите внимание, что приведенные ниже строки являются избыточными, их можно безопасно удалить:
else:
count_letters = count_letters + 0