Python

Python начальный уровень кода нет

Написать программу, позволяющую пользователю ввести текст. Слова в тексте разделены одним или несколькими пробелами, или переносом строки. Программа должна вывести на экран количество повторений для каждого слова в этом тексте. Используйте словарь.
Ruslan Kuzmenko
Ruslan Kuzmenko
22
Вот так будет работать с переводами строки (текст предыдущего оратора, скопированный у какой-то нейросети, принимает только одну строку и с переводами строк, соответственно, не работает):
 from itertools import chain
from collections import Counter
print(*map('%s %d'.__mod__, Counter(chain.from_iterable(map(str.split, iter(input, '')))).items()), sep = '\n')
Или так, если уникальных слов на вход подаётся совсем много (порядка нескольких тысяч):
 from itertools import chain
from collections import Counter
print('\n'.join(map('%s %d'.__mod__, Counter(chain.from_iterable(map(str.split, iter(input, '')))).items())))

Пустая строка - окончание ввода.
Пример. Вводим:
 du du hast du hast mich
du du hast du hast mich
du hast mich gefragt und ich hab nichts gesagt
(в конце дважды нажимаем Enter, чтобы ввести пустую строку)
Получаем:
 du 7
hast 5
mich 3
gefragt 1
und 1
ich 1
hab 1
nichts 1
gesagt 1
Слова считаются сквозняком по всем строкам за один проход, при этом обрабатывается одна строка за раз, хоть терабайт текста введи. Объём используемой памяти зависит от длины самой длинной строки и от количества уникальных слов в тексте.

collections.Counter - это разновидность словаря, в котором значениями являются количества вхождений элемента в последовательность, подаваемую на вход.
Сергей Нестерёнок
Сергей Нестерёнок
87 571
Лучший ответ
Вячеслав Гесь И ты еще говоришь что не пользуешься чатгпт
 text = input("Введите текст: ") 
words = text.split()
word_counts = {}
for word in words:
word_counts[word] = word_counts.get(word, 0) + 1
for word, count in word_counts.items():
print(f"{word}: {count}")
Денис Першин
Денис Першин
14 368
Ruslan Kuzmenko а что значит f в print(f"...