如何利用enumerate()获取的索引对单词切片并定位元音?
解决单词重排问题:找到第一个元音并调整顺序
核心思路
先定位单词里第一个元音的位置,再通过切片把元音之前的部分移到末尾。enumerate的作用就是帮你遍历字符的同时拿到它的索引,找到索引后直接用切片拼接就行,两步分开做很简单。
具体实现代码
# 输入要处理的单词 word = "where" # 定义元音集合(包含大小写) vowels = {'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'} # 初始化第一个元音的索引 first_vowel_idx = None # 用enumerate遍历,同时拿到索引和字符 for idx, char in enumerate(word): if char in vowels: first_vowel_idx = idx break # 找到第一个元音就停止遍历,不用继续找后面的 # 拼接结果 if first_vowel_idx is not None: result = word[first_vowel_idx:] + word[:first_vowel_idx] print(result) # 输出: erewh else: print("这个单词里没有元音")
步骤拆解
- enumerate的用法:遍历
word时,enumerate会返回一对值——idx是当前字符的位置(从0开始计数),char是字符本身。比如遍历"where"时,第三次循环拿到idx=2和char='e',这就是第一个元音的位置。 - 切片操作说明:
word[first_vowel_idx:]:从元音位置开始,取到单词结尾的所有字符("where"里就是"ere")word[:first_vowel_idx]:从单词开头取到元音位置之前的字符("where"里就是"wh")- 把这两部分拼起来,就得到了元音在前、前面部分移到末尾的结果。
小优化(可选)
如果要忽略大小写(比如处理"Where"或者"WHEn"),可以把判断条件改成:
if char.lower() in {'a', 'e', 'i', 'o', 'u'}:
这样不管字符是大写还是小写,都能正确识别元音。
内容的提问来源于stack exchange,提问作者DKzK
相关产品推荐
相关产品推荐

