Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/315: Рейтинг темы: голосов - 315, средняя оценка - 4.65
97 / 20 / 13
Регистрация: 27.02.2018
Сообщений: 60

Найти количество различных слов в тексте

01.03.2018, 14:22. Показов 67431. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Воoбщем задача, запутался,нужна подсказка.

Во входном файле (вы можете читать данные из sys.stdin, подключив библиотеку sys) записан текст. Словом считается последовательность непробельных символов идущих подряд, слова разделены одним или большим числом пробелов или символами конца строки. Определите, сколько различных слов содержится в этом тексте.

Тест 1
Входные данные:
She sells sea shells on the sea shore;
The shells that she sells are sea shells I'm sure.
So if she sells sea shells on the sea shore,
I'm sure that the shells are sea shore shells.


Вывод программы:
19

Python
1
2
3
4
5
6
7
iin_file = open("input.txt", "r", encoding="utf8")
out_file = open("output.txt", "w", encoding="utf8")
reader = in_file.readlines()
a = []
for i in reader:
   a.append(i.split())
print(len(set(a)))
Хотел создать список и разбить его на токены .
Дальше думал при помощи len(set(a)) преобразовать в множество и подсчитать кол-во слов. Выдает ошибку unhashable type: 'list
Что не правильно в моем мышлении относительно этой задачи? Насколько знаю множество можно получить из списка a = [1, 2, 3, 4] a = set(a) , print(len(a))
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.03.2018, 14:22
Ответы с готовыми решениями:

Runtime Error. Количество различных слов в тексте
Всем привет, Нахожусь на финальной неделе курса по Питону на Coursera. И вот несколько дней не дает покоя одна задача. Во...

Дан текст. Найти количество различных слов минимальной длины
Советы преподавателя: 1. Сначала избавьтесь знаков препинания. Для этого можно использовать набор знаков препинания с модуля string: ...

Количество различных слов-палиндромов в данном тексте
Дана строка текста. Создать приложение, которое посчитает количество различных слов-палиндромов есть в данном тексте. Если одно и то же...

17
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
01.03.2018, 14:42
Лучший ответ Сообщение было отмечено Zarelix как решение

Решение

Python
1
2
3
4
5
iin_file = open("input.txt", "r", encoding="utf8")
a = []
for i in in_file.read().split('\n'):
   a += i.split()
print(len(set(a)))
дело в том что a.append(i.split()) добавляет в список а новый список и получается а уже массив
а += i.split() добавляет в список а элементы из списка i.split()
2
97 / 20 / 13
Регистрация: 27.02.2018
Сообщений: 60
01.03.2018, 14:54  [ТС]
Спасибо,нет вопросов.
0
 Аватар для Вадим Тукаев
312 / 293 / 116
Регистрация: 23.01.2018
Сообщений: 933
02.03.2018, 12:30
Python
1
2
3
4
5
6
7
8
9
10
11
s = "She sells sea shells on the sea shore; The shells that she sells are sea shells I'm sure. So if she sells sea shells on the sea shore, I'm sure that the shells are sea shore shells."
 
words = 0
prev = True
 
for ch in s:
    cur = str.isspace(ch)
    if (prev and not cur): words += 1
    prev = cur
 
print(words)
0
3 / 3 / 0
Регистрация: 25.02.2018
Сообщений: 4
04.03.2018, 06:35
Вот это лишнее, Semen-Semenich:
Python
1
for i in in_file.read().split('\n'):
Не разбивайте входной текст на строки, разбивайте сразу на слова.
И отдельные слова сразу кидайте в сет.
Тогда и цикл for не понадобится, хватит одной команды:
Python
1
print(len(set(in_file.read().split())))
Добавлено через 8 минут
Что-то вы совсем не то сделали, Вадим Тукаев. Вы просто посчитали количество слов в тексте. Во-первых, это можно посчитать гораздо проще, len(s.split()), во-вторых, zarelix просил узнать количество разных слов.
3
 Аватар для Вадим Тукаев
312 / 293 / 116
Регистрация: 23.01.2018
Сообщений: 933
04.03.2018, 14:45
Цитата Сообщение от sargon_python Посмотреть сообщение
Что-то вы совсем не то сделали, Вадим Тукаев. Вы просто посчитали количество слов в тексте. Во-первых, это можно посчитать гораздо проще, len(s.split()), во-вторых, zarelix просил узнать количество разных слов.
Да, Вы правы, невнимательно прочитал ТЗ.
0
Модератор
Эксперт функциональных языков программирования
3137 / 2284 / 469
Регистрация: 26.03.2015
Сообщений: 8,888
05.03.2018, 02:09
Цитата Сообщение от sargon_python Посмотреть сообщение
print(len(set(in_file.read().split())))
Неправильно считает.
Python
1
print(len(set('word, word word! word? word: word.'.split())))
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
05.03.2018, 02:37
Цитата Сообщение от Shamil1 Посмотреть сообщение
Неправильно считает.
Это да (причем все варианты), но на pythontutore такие дурацкие тупые задания. Конкретно в этом (уж сколько раз его постили здесь) они под словом понимают любую последовательность символов (то есть и пунктуация!) без пробелов (разный регистр одного и того же слова также в расчет не берется) и поэтому правильный ответ для них именно 19.

Добавлено через 4 минуты
P.S. И после таких туторов люди приходят в Data Science...
0
Модератор
Эксперт функциональных языков программирования
3137 / 2284 / 469
Регистрация: 26.03.2015
Сообщений: 8,888
05.03.2018, 03:01
Цитата Сообщение от Garry Galler Посмотреть сообщение
P.S. И после таких туторов люди приходят в Data Science...
Причём те из них, у кого совсем не получается писать писать программы, идут преподавать программирование.
0
97 / 20 / 13
Регистрация: 27.02.2018
Сообщений: 60
05.03.2018, 10:24  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Добавлено через 4 минуты
P.S. И после таких туторов люди приходят в Data Science...
Цитата Сообщение от Shamil1 Посмотреть сообщение
Причём те из них, у кого совсем не получается писать писать программы, идут преподавать программирование.
Так в ру нете как таковой нет альтернативы по питону,если есть подскажите.
0
97 / 20 / 13
Регистрация: 27.02.2018
Сообщений: 60
10.03.2018, 15:22  [ТС]
Кака написать в более функциональном стиле? А точнее первую строку with open засунуть в print
Python
1
2
with open("input.txt", "r", encoding="utf8") as in_file:
    print(len(set(map(str, in_file.read().split()))))
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
10.03.2018, 15:44
Лучший ответ Сообщение было отмечено Zarelix как решение

Решение

Цитата Сообщение от Zarelix Посмотреть сообщение
первую строку with open засунуть в print
Зачем? Если значение файлового дескриптора мы не сохраняем ни в какой переменной - можно не думать о его освобождении. То есть контекстный менеджер или .close() будут не нужны.

Python
1
len(set(open("1.txt", "r", encoding="utf8").read().split()))
map тут зачем? Прочитали, разделили, упаковали в set, подсчитали.
1
97 / 20 / 13
Регистрация: 27.02.2018
Сообщений: 60
10.03.2018, 15:48  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Зачем? Если значение файлового дескриптора мы не сохраняем ни в какой переменной - можно не думать о его освобождении. То есть контекстный менеджер или .close() будут не нужны.
PythonВыделить код
1
len(set(open("1.txt", "r", encoding="utf8").read().split()))
map тут зачем? Прочитали, разделили, упаковали в set, подсчитали.
Спасибо за обьяснение.
0
 Аватар для kh_evgenia
0 / 0 / 0
Регистрация: 25.01.2019
Сообщений: 8
29.01.2019, 07:38
Как проделать все тоже самое, но используя функциональное программирование?
0
0 / 0 / 0
Регистрация: 14.11.2019
Сообщений: 3
21.03.2020, 17:25
Вот так будет работать нормально

fin = open("input.txt", "r", encoding="utf8")
four = open("output.txt", "w", encoding="utf8")
a = []
a=(fin.read().split())
four.write(str(len(a)))
fin.close()
four.close()
0
Заклинатель змей
 Аватар для DobroAlex
705 / 560 / 219
Регистрация: 30.04.2016
Сообщений: 2,605
22.03.2020, 09:47
Python
1
2
3
4
def do_stuff(t: str) ->int:
   # сюда передаём сырые данные из файла
   t=" ".join(t.split())  # https://stackoverflow.com/a/1546251/12444061
   return len(set(t.split(" ")))
Не тестировал
0
0 / 0 / 0
Регистрация: 27.03.2019
Сообщений: 3
05.04.2020, 15:16
Как решить эту же задачу, но с помощью функционального программирования?
Хелпаните
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
05.04.2020, 15:23
Цитата Сообщение от Leonardo4rus Посмотреть сообщение
решить эту же задачу, но с помощью функционального программирования?
Что ты понимаешь под функ. программированием?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.04.2020, 15:23
Помогаю со студенческими работами здесь

Найти в тексте N слов, содержащих наибольшее количество различных букв
Дан файл, содержащий русский текст, размер текста не превышает 1 Мбайт. Найти в тексте N (N ≤ 100) слов, содержащих наибольшее...

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

Определить количество различных слов в заданном тексте
в) Определить количество различных слов в заданном тексте.

Создать программу, которая посчитает количество различных слов-палиндромов есть в данном тексте
Дана строка текста. Создать программу, которая посчитает количество различных слов-палиндромов есть в данном тексте. Если одно и то же...

Найти количество различных слов в строке
Доброй ночи! Необходимо найти количество различных слов в строке. Объясните хотя бы алгоритм. Я так понимаю нам необходимо разделить строку...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru