From ac1d38d1dc4f087dae0947d793d91ba10211babb Mon Sep 17 00:00:00 2001 From: Zver Date: Mon, 15 Dec 2025 14:08:21 +0500 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=2010=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lesson.10.py | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 lesson.10.py diff --git a/lesson.10.py b/lesson.10.py new file mode 100644 index 0000000..a5d6d0d --- /dev/null +++ b/lesson.10.py @@ -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])) \ No newline at end of file