Ошибка в решении задачи "Поросячья латынь"
На всякий случай, я только недавно изучаю Python. Мой код выполняет задачу, но по какой то причине, при использовании слова 'have' делает это несколько раз. Я много времени потратил на то, чтобы найти ошибку, но так и не смог. Надеюсь на помощь кого то и пользователей. К сожалению, не справился с форматированием кода на сайте, получается через одно место )
Задача Написать программу, которая будет выполнять изменение слов по принципу "поросячья латынь".
если слово начинается с согласной буквы (включая y), то все буквы с начала слова и до первой гласной (за исключением y) переносятся в конец слова и дополняются сочетанием букв ay. Например, слово computer будет преобразовано в omputercay, а слово think – в inkthay;
если слово начинается с гласной буквы (не включая y), к концу слова просто добавляется way. К примеру, слово algorithm превратится в algorithmway, а office – в officeway.
Также добавить проверки на наличие больших букв в слове. Они должны сохраняться.
Если в оригинале слово начинается с заглавной буквы, то в переводе на «поросячью латынь» оно также должно начинаться с заглавной буквы, тогда как буквы, перенесенные в конец слов, должны стать строчными. Например, слово Computer должно быть преобразовано в Omputercay.
Если в конце слова стоит знак препинания, он там же и должен остаться после выполнения перевода. То есть слово в конце предложения Science! необходимо трансформировать в Iencescay!
def pig_latin(words_list): vowels = ['a','A','e','E','i','I','o','O','u','U'] consonants = ['b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z', 'B','C','D','F','G','H','J','K','L','M','N','P','Q','R','S','T','V','W','X','Y','Z'] punctuation_marks = [',','.','!','?'] change_words = [] for word in words_list: if word[0] in vowels: if word[-1] in punctuation_marks: change_words.append(word[0 : -1] + 'way' + word[-1]) else: change_words.append(word + 'way') elif word[0] in consonants : if word[0].isupper() and word[-1] in punctuation_marks: for index in range(len(word)): if word[index] in vowels: change_words.append(word[index].upper() + word[-index:-1] + word[:index].lower() + 'ay' + word[-1]) print('1') elif word[0].isupper() and word[-1] not in punctuation_marks: for index in range(len(word)): if word[index] in vowels: change_words.append(word[index].upper() + word[-index:] + word[:index].lower() + 'ay') print('2') elif word[0].lower() and word[-1] in punctuation_marks: for index in range(len(word)): if word[index] in vowels : change_words.append(word[index:-1] + word[:index] + 'ay' + word[-1]) print('3') elif word[0].lower() and word[-1] not in punctuation_marks: for index in range(len(word)): if word[index] in vowels: change_words.append(word[index:] + word[:index] + 'ay') print('4') return ' '.join(change_words) def main(): user_input = input('Введите слово для перевода на "поросячью латынь"') user_input = user_input.split() print(pig_latin(user_input)) if __name__ == '__main__' : main()