Python猪拉丁语翻译程序代码问题求助
解决猪拉丁语转换的单词处理问题
你的代码目前存在一个关键问题:循环里写的for character in wordList,但wordList里的元素是完整的单词,不是单个字符,所以if (character in consonant)这个判断几乎永远不会触发(除非输入单个辅音字母的单词),自然没法正确处理每个单词。
按照你给定的规则(把单词开头所有辅音移到末尾,再加'ay'),可以这样修改代码:
# 定义辅音集合,方便快速判断 consonants = {'b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','y','z'} # 定义元音,用来找单词里第一个元音的位置 vowels = {'a','e','i','o','u'} og_sentence = input('Enter a sentence to be converted to pig latin: ') word_list = og_sentence.split() pig_latin_words = [] for word in word_list: # 处理每个单词,先找开头连续辅音的长度 consonant_count = 0 for char in word.lower(): # 不区分大小写处理 if char in consonants: consonant_count +=1 else: break # 遇到元音就停止计数 if consonant_count == 0: # 单词开头是元音,直接加ay pig_latin = word + 'ay' else: # 把开头的辅音移到末尾,再加ay pig_latin = word[consonant_count:] + word[:consonant_count] + 'ay' pig_latin_words.append(pig_latin) # 把转换后的单词拼接成句子输出 print(' '.join(pig_latin_words))
代码说明:
- 用集合存储辅音和元音,判断字符是否属于的速度更快
- 遍历每个单词时,先统计开头连续的辅音数量
- 根据辅音数量处理单词:
- 没有辅音(开头是元音):直接在单词末尾加'ay'
- 有辅音:把辅音部分(
word[:consonant_count])移到单词剩余部分(word[consonant_count:])的后面,再加'ay'
- 最后把所有转换后的单词拼接成完整句子输出
测试你的示例输入:输入i love chicken,会输出iay ovelay ickenchay,完全符合你要的结果。
内容的提问来源于stack exchange,提问作者elizabethgleigh
相关产品推荐
相关产品推荐

