Что нужно сделать
Есть файл text.txt
, который содержит текст. Напишите программу, которая выполняет частотный анализ, определяя долю каждой буквы английского алфавита в общем количестве английских букв в тексте, и выводит результат в файл analysis.txt
. Символы, не являющиеся буквами английского алфавита, учитывать не нужно.
В файл analysis.txt
выводится доля каждой буквы, встречающейся в тексте, с тремя знаками в дробной части. Буквы должны быть отсортированы по убыванию их доли. Буквы с равной долей должны следовать в алфавитном порядке.
Пример:
Содержимое файла text.txt:
Mama myla ramu.
Содержимое файла analysis.txt:
a 0.333
m 0.333
l 0.083
r 0.083
u 0.083
y 0.083
Что оценивается
- Результат вычислений корректен.
- Формат вывода соответствует примеру.
- Основной функционал описан в отдельных функциях.
- Переменные и функции имеют значащие имена, не только a, b, c, d (подробнее об этом в видео 2.3).
- Входные и выходные файлы названы так, как указано в задании.
file = open('text.txt', 'r', encoding='UTF-8')
text = file.read()
abc = 'a b c d e f g h i j k l m n o p q r s t u v w x y z'.split()
uniq_symb = {}
count = 0
for i in text.lower():
if i in abc:
count += 1
if i not in uniq_symb:
uniq_symb[i] = 1
else:
uniq_symb[i] += 1
for k, v in uniq_symb.items():
uniq_symb[k] = round((v / count), 3)
res = [(k, v) for k, v in uniq_symb.items()]
res = sorted(res, key=lambda i:i[0])
res = sorted(res, key=lambda i:i[1], reverse=True)
new_file = open('analysis.txt', 'w', encoding='UTF-8')
for i in res:
new_file.writelines(str(i) + '\n')
file.close()
new_file.close()