Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
Studying
 Аватар для Vermont74
2 / 2 / 0
Регистрация: 13.03.2021
Сообщений: 38

Сколько раз встречается в тексте каждое слово

29.12.2021, 22:52. Показов 2002. Ответов 1

Студворк — интернет-сервис помощи студентам
Здравствуйте. Проблема с сортировкой. Решаю задачу:


Дан текст на русском языке. Посчитайте, сколько раз встречается в тексте каждое слово.

Слово — это последовательность русских букв. Кроме слов, в тексте могут присутствовать пробелы и знаки препинания («,», «.», «!», «?», «:» и «;»). Других символов в тексте нет.

Слова необходимо сравнивать с точностью до регистра. То есть «Привет» и «привет» — это одно и то же слово, а вот «рыба», «рыбы» и «рыбу» — три разных.

Формат ввода
В первой строчке задано одно целое число N (1 ≤ N ≤ 1000) — количество строк в тексте. В следующих N строках приведён сам русский текст. Текст состоит из русских букв, пробелов и знаков препинания: «,», «.», «!», «?», «:» и «;». Длина текста не превышает 100 000 символов.

Формат вывода
Выведите слова исходного текста, упорядоченные по убыванию количества их попаданий в текст. В случае, если два слова встречаются в тексте одинаковое количество раз, выведите их в лексикографическом порядке.

Каждое слово нужно вывести в отдельной строке. Первая буква слова должна быть заглавной (даже если она не была заглавной в исходном тексте), остальные — строчными.

Пример
Ввод Вывод
2
Ехал Грека через реку. Видит Грека в реке рак.
Сунул Грека руку в реку, рак за руку Греку цап.
Грека
В
Рак
Реку
Руку
Видит
Греку
Ехал
За
Реке
Сунул
Цап
Через


Вот мои попытки решить, но тщетно. Выдает ошибку.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
n = int(input())
k = 0
text1 = []
text = []
counts = {}
result = []
for _ in range(n):
    string = input().replace(',', '').replace('.', '').replace('!', '').replace('?', '')
    string = string.replace(';', '').replace(':', '')
    text1.append(string.lower().split())
for i in text1:
    for elem in i:
        text.append(elem)
for elem in text:
    counts[elem] = text.count(elem)
 
result = [(k, counts[k]) for k in sorted(counts, key=counts.get)]
counts = {}
for i in result:
    counts[i[0].capitalize()] = i[1]
text1 = []
while k < len(result):
    for elem in result[::-1]:
        if elem[1] == result[k][1]:
            indx2 = -(result[::-1].index(elem))
            break
    text1.append(sorted(list(counts.keys())[k:indx2]))
    if not text1[len(text1) - 1]:
        text1.remove([])
        text1.append([list(counts.keys())[k]])
        break
    k = indx2
for line in text1[::-1]:
    for elem in line:
        print(elem)
Проблема с выводом - необходимо отсортировать в алфавитном порядке элементы с одинаковым кол-вом содержания в тексте, но сложность в том, как обнаружить эти элементы?
Возможно, ошибка просто в коде. Нужна помощь.
И lambda, модули и прочее использовать нельзя. Поэтому и пишу этот вопрос на форум. Знающие люди, помогите!
Заранее благодарю всех. И поздравляю с наступающим!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.12.2021, 22:52
Ответы с готовыми решениями:

Посчитать сколько раз каждое слово встречается в тексте
Дана строка текста. Посчитать сколько раз каждое слово встречается в тексте. Вывести слова, которые встречаются только 4 раза в том...

Определите, сколько раз встречается в некотором тексте каждое слово
Помогите срочно написать програму на районне Определите, сколько раз встречается в некотором тексте каждое слово не используя регулярные...

Сколько раз в тексте встречается заданное слово
Определить, сколько раз в тексте встречается заданное слово.

1
enx
 Аватар для enx
1190 / 766 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
30.12.2021, 05:00
Python
1
2
3
4
5
6
7
res = {}
pun = ',.!?:;'
for i in range(int(input())):
    for k in input().split():
        tmp = k.strip(pun).capitalize()
        res[tmp] = res.get(tmp, 0) + 1
print('\n'.join(sorted(sorted(res), reverse=True, key=res.get)))

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
Ехал Грека через реку. Видит Грека в реке рак.
Сунул Грека руку в реку, рак за руку Греку цап.
Грека
В
Рак
Реку
Руку
Видит
Греку
Ехал
За
Реке
Сунул
Цап
Через
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.12.2021, 05:00
Помогаю со студенческими работами здесь

Определить, сколько раз в тексте встречается заданное слово
Определить, сколько раз в тексте встречается заданное слово. можно использовать любой текст например стихи) &quot;Я помню чудное...

Найти сколько каждое слово в тексте повторяется
Надо найти сколько каждое слово в тексте сайта повторяется. Посмотрел многие посты, связанные с похожими темами, ничего не нашёл нужного,...

подсчитать сколько раз встречается слово с использованием lambda
from functools import * s= print(reduce(lambda x:x.count('сети'),s)) выдает ошибку TypeError: &lt;lambda&gt;() takes 1 positional argument...

Определить, сколько раз встречается в файле самое короткое слово
Дан файл(файл нужно создать), содержащий текст на русском языке. Определить, сколько раз встречается в нем самое короткое слово.

Определить, сколько раз встречается в файле самое длинное слово
Дан файл, содержащий текст на русском языке. Определить, сколько раз встречается в нем самое длинное слово. python


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru