Вопрос Программирование в python.

Регистрация
12 Июн 2013
Сообщения
86
Репутация
0
Спасибо
0
Монет
0
s = '.,;:-?!'

s_1 = input().split()

for i in range(len(s_1)):

if s_1[-1] in s:

s_1.replace(s_1[-1], '')

if s_1[0] in s:

s_1.replace(s_1[0], '')

print(len(set(s_1))) Почему метод replace ничего не делает? Как исправить программу так, чтобы знаки препинания удалялись?
 
Потому, что replace НЕ меняет исходную строку, а ВОЗВРАЩАЕТ новую строку: s_1 = s_1.replace(s_1[-1], '') В целом же, проще использовать регулярные выражения и сначала удалять знаки препинания, а только потом разрезать строку на слова: import re
print(len(set(re.sub(r'[.,;:-?!]', '', input()).split())))
 
Удаление знаков препинания из строки в Питоне по другому делается...
Например так ==> from string import punctuation as p

s = 'Скажи-ка, дядя, ведь не даром, Москва спаленная пожаром, французу отдана?'
def f(x):
x = list(x)
for i in range(len(x)):
if x in p:
x = ''
return ''.join(x)

print(f(s))
Получим строку
"Скажика дядя ведь не даром Москва спаленная пожаром французу отдана"
 
в regex есть свой split import re
print(len(set(re.split(r'[.,;:-?!\s]+', input()))))
 
тебе наверное второй вложенный цикл надо сделать по символам слова
 
Назад
Сверху