Программа, которая сортирует слова по их частоте использования и выводит их в порядке убывания
Вашему вниманию предлагается программа, которая принимает текст от пользователя, анализирует его, сортирует слова по их частоте использования и выводит их в порядке убывания:
# Эта программа принимает текст от пользователя,
# анализирует его, сортирует слова по их частоте
# использования и выводит их в порядке убывания.
# Теперь пользователи могут увидеть,
# какие слова использовались чаще всего в тексте и сколько раз.
import string
def analyze_text(text):
"""
This function analyzes the text and returns a dictionary
containing the word frequency.
"""
# Remove punctuation and convert to lowercase
text = text.lower()
text = text.translate(text.maketrans("", "", string.punctuation))
# Split the text into words
words = text.split()
# Create a dictionary to store the word frequency
word_freq = {}
for word in words:
if word not in word_freq:
word_freq[word] = 0
word_freq[word] += 1
return word_freq
def sort_words(word_freq):
"""
This function sorts the words in descending order by frequency
"""
# Create a list of tuples containing the word and frequency
word_freq_list = [(word, freq) for word, freq in word_freq.items()]
# Sort the list by frequency
word_freq_list.sort(key=lambda x: x[1], reverse=True)
return word_freq_list
def main():
text = input("Enter text: ")
word_freq = analyze_text(text)
word_freq_list = sort_words(word_freq)
# Print the word frequency in descending order
print("Word frequency:")
for word, freq in word_freq_list:
print(f"{word}: {freq}")
if __name__ == "__main__":
main()
Для проверки работоспособности этой программы я сначала использовал следующий текст:
Зорови́й нерв (лат. nervus opticus) — II (друга) пара черепних нервів у людини та хребетних. Забезпечує здатність бачити. За функціональним поділом – нерв спеціальної соматичної чутливості (англ. special somatic afferent). Зважаючи на особливості мікро- та макроанатомії, зоровий нерв не є нервом у класичному розумінні цього слова, а радше частиною головного мозку, яка винесена на периферію. Так, він розвивається як виріст переднього мозку, покритий центральним мієліном та трьома оболонами, які покривають утвори ЦНС, між цими оболонами циркулює спинномозкова рідина. Зоровий нерв утворений аксонами гангліонарних клітин сітківки. Частина, яку можна побачити при огляді очного дна, називається диском зорового нерва (лат. discus nervi optici). Анатомічно утвір простягається від диска зорового нерва до перехрестя зорових нервів (лат. chiasma opticum), опісля віддає свої волокна зоровим шляхам (лат. tractus opticus). Кровопостачання складне, здійснюється в основному завдяки очній артерії (лат. arteria ophtalmica) та її гілкам.
С этим текстом программа справилась на ура, и тогда я решил «скормить» ей текст её собственного программного кода. Просто скопировал код и ввёл в качестве текста. И вот здесь уже что-то пошло не так. Программа вывела только первые 6 слов введённого текста (и их частоту).
Почему так произошло? Как это можно исправить. Заранее благодарю за ответ.