Сделал 10 задание

This commit is contained in:
parent 3944dc3eba
commit ac1d38d1dc

61
lesson.10.py Normal file
View file

@ -0,0 +1,61 @@
''' ****** Задание 10 из 20 *********
* Частотный анализ — это метод подсчёта, какие символы (или слова) чаще всего встречаются в тексте.
Это важнейший инструмент взлома многих классических шифров — от шифра Цезаря и до шифровальной машины «Энигма».
В этой задаче вы реализуете простейшую версию частотного анализа:
выясните, какая буква встречается чаще других в тексте.
Напишите программу, которая читает строки до тех пор, пока не встретится строка 'ФИНИШ', и выводит наиболее часто встречающуюся букву (в нижнем регистре).
Формат ввода
Вводятся строки, пока не будет введена строка «ФИНИШ».
Формат вывода
Выводится один символ в нижнем регистре — наиболее часто встречающийся во введённой строке.
Примечания
Пробелы в анализе не участвуют.
Если в результате анализа получено несколько ответов, следует вывести первый по алфавиту.
У данной задачи множество "быстрых" способов решения, но в этом параграфе мы просим вас сосредоточиться на использовании строк и списков.
Подсказка
Организуйте два списка:
letters = [] # для хранения букв
counts = [] # для хранения количеств
Организовав цикл по строкам, можете обработать каждую из них следующим образом:
for letter in row:
letter = letter.lower()
if (index := letters.index(letter)) != -1: # значит буква уже встречалась
counts[index] += 1
else: # буква встретилась в первый раз
letters.append(letter)
counts.append(1)
После формирования данных, остаётся найти максимум в списке counts и вывести букву, которая ему соответствует.
Пример 1
Ввод
Баобаб
Белка
Бобы
ФИНИШ
Вывод
б
'''
if __name__ == "__main__":
data = []
while (n := input()) != 'ФИНИШ':
data.extend(n.lower().split())
max_count, data = 0, ''.join(data)
for symbol in set(data):
max_count = max(max_count, data.count(symbol))
print(min([i for i in set(data) if data.count(i) == max_count]))