Здравствуйте и добро пожаловать на SO.
Если я понимаю вашу проблему, я думаю, вы просто неправильно написали конструкцию if then else
.
import string
def word_distribution(s):
s = s.lower()
s = s.split()
wordfreq = {}
for word in s:
if word[-1] in string.punctuation:
if word[-1] in wordfreq:
wordfreq[word[:-1]] += 1
else:
wordfreq[word[:-1]] = 1
else:
if word in wordfreq:
wordfreq[word] += 1
else:
wordfreq[word] = 1
return wordfreq
x = word_distribution("Why's it always the nice guys?")
print(x)
Я использовал string.punctuation
чтобы проверить, является ли последний символ символом пунктуации.
Выходные данные: {"why's": 1, 'it': 1, 'always': 1, 'the': 1, 'nice': 1, 'guys': 1}
Редактировать: Другое решение, использующее isalpha
:
def word_distribution(s):
s = s.lower()
s = s.split()
wordfreq = {}
for word in s:
if word[-1].isalpha():
if word[-1] in wordfreq:
wordfreq[word] += 1
else:
wordfreq[word] = 1
else:
if word in wordfreq:
wordfreq[word[:-1]] += 1
else:
wordfreq[word[:-1]] = 1
return wordfreq
x = word_distribution("Why's it always the nice guys?")
print(x)
Выходные данные это: {"why's": 1, 'it': 1, 'always': 1, 'the': 1, 'nice': 1, 'guys': 1}