numSyllables(Well):
word = Well.lower()
Syllable = 0
vowels = "aeiouy"
Sy=(len(Well))
if Sy <=3:
Syllable+= 1
for index in range(1,len(Well)):
if Well[index] in vowels and Well[index-1] not in vowels:
Syllable+=1
if Well.endwith ("es") and Well.endwith("ed"):
Syllable -=1
elif Well.endwith ("des") and Well.endwith("tes") and Well.endwith("ded") and Well.endwith("ted"):
Syllable +=1
elif Well.endswith ("e"):
Syllable -=1
if Syllable == 0:
Syllable +=1
return Syllable
Я пытаюсь подсчитать слоги в слове, если в слоге меньше трех букв, значит, в нем один слог, если рядом расположены следующие друг за другом гласные, это считается одним слогом, окончания слов –es или –ed игнорируются , если ему не предшествует буква «d» или «t». (например, «заботы» и «нанесенный вред» - это один слог, а «кардинальный» и «заявленный» - два) Слова, оканчивающиеся на «е», обычно не употребляются (не учитываются); если он не оканчивается на «ле» (например, «воздушный змей» и «режим» - это один слог, а «маленький» и «киббл» - два)
Когда я запускаю свой код, вот результат: "/Users/andyz./Documents/Well/RScores.py", строка 36, в numSyllables если Well.endwith ("es") и Well.endwith ("ed"): AttributeError: объект 'str' не имеет атрибута 'endwith'.
Есть ли способ решить мою проблему?
Думаю, это должно быть заканчивается, а не конец с
if Well[index].endswith ("es") and Well[index].endswith("ed"):
Вы, наверное, имели ввиду
endswith
: docs.python.org/3/library/stdtypes.html#str.endswith