为了以防万一,我刚刚学习 Python。我的代码可以完成这项工作,但是由于某种原因,当使用“have”这个词时,它会多次执行该操作。我花了很多时间尝试查找错误,但找不到。我希望得到某人和用户的帮助。不幸的是,我无法处理网站上的代码格式,结果发现它存在于其他地方)
任务:编写一个程序,使用“猪拉丁文”原理改变单词。
如果单词以辅音字母(包括 y)开头,则将单词从开头到第一个元音的所有字母(y 除外)移至单词末尾,并补充字母组合 ay。例如,单词computer将被转换为computercay,单词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()
您的错误是,当在以辅音开头的单词中搜索第一个元音时,找到该元音后并没有中断循环(以及对该单词的处理)。
我会使其更短,稍微改变逻辑。