Сделал 10 задание
This commit is contained in:
parent
3944dc3eba
commit
ac1d38d1dc
61
lesson.10.py
Normal file
61
lesson.10.py
Normal 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]))
|
||||||
Loading…
Reference in a new issue