Форум сайта python.su
дано:
Во входном файле (вы можете читать данные из 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 )
Офлайн
Сейчас в просто считате количество двойных/одинарных пробелов во введенной строке. А если вам подадут сразу много строк (например, через 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__())
Отредактировано scidam (Ноя. 2, 2016 02:40:28)
Офлайн
>>> 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 >>>
Офлайн
len(set(re.findall('[^ \n]+', sys.stdin.read())))
Офлайн
izekiaОбычный str.split() по ним и так разобьёт.re.findall('[^ \n]+'
Офлайн
py.user.nextага, точно, просто у меня сначала был вариант без знаков препинания, потом перечитал условие и поменял регулярку
Обычный str.split() по ним и так разобьёт.
Офлайн