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

ввод:
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

мое решение:
 a = input()
print(int(a.count(' ')) + 1 )

выдает 8 !

не могу сообразить в чем дело
scidam
Сейчас в просто считате количество двойных/одинарных пробелов во введенной строке. А если вам подадут сразу много строк (например, через stdin). Тут можно использовать регулярные выражения, и ваш код должен выглядеть приблизительно так (файл wc.py):
 import sys
import re
# You need to check regexp for your needs...
wc = lambda s:  set(re.findall(r"""[\w'";,\.)]+""", s))
print('Words, total: ', set.union(*(wc(line) for line in sys.stdin.readlines())).__len__())

Дальше, пусть ваши тестовые строки записаны в файл test.txt, а код находится в файле wc.py (word counter). Тогда получим следующее (выполненяя в linux)):
cat test.txt | python3 wc.py
Words, total: 19
py.user.next
  
>>> 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.
... """
>>> 
>>> n = len(set(s.split()))
>>> n
19
>>>
izekia
 len(set(re.findall('[^ \n]+', sys.stdin.read())))
py.user.next
izekia
  
re.findall('[^ \n]+'
Обычный str.split() по ним и так разобьёт.
izekia

py.user.next
Обычный str.split() по ним и так разобьёт.
ага, точно, просто у меня сначала был вариант без знаков препинания, потом перечитал условие и поменял регулярку
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB