You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python代码问题:如何从单词列表中筛选所有仅含2个元音的单词

筛选仅含2个元音单词的代码修复

原代码意图从单词列表中筛选出仅包含2个元音的单词,但执行后仅返回第一个符合条件的单词,运行结果为:

Result: ['tragedy']

原代码问题分析

def vowels(list):
    res = []
    for word in list:
        vowel_n = 0
        for x in word:
            if x in 'aeiou':
                vowel_n+=1
                
                if vowel_n== 2:
                    res.append(word)
                    return res

print(vowels(['tragedy', 'proof', 'dog', 'bug', 'blastoderm']))

问题有两点:

  • 一旦找到某个单词的元音数达到2,就立刻执行return res直接终止函数,导致后续单词无法被检查。
  • 仅在元音数达到2时就将单词加入结果,没有判断单词的元音总数是否恰好为2,会误把元音数超过2的单词也纳入结果。

修正后的代码

def vowels(word_list):
    res = []
    for word in word_list:
        vowel_n = 0
        for x in word:
            if x.lower() in 'aeiou':  # 兼容大写元音的情况(可选优化)
                vowel_n += 1
        # 遍历完整个单词后,判断元音总数是否恰好为2
        if vowel_n == 2:
            res.append(word)
    return res  # 遍历所有单词后统一返回结果

print(vowels(['tragedy', 'proof', 'dog', 'bug', 'blastoderm']))

运行结果

Result: ['tragedy', 'proof']

说明:

  • 移除了循环内的提前返回语句,让函数能遍历完所有单词后再返回结果。
  • 调整判断逻辑:统计完单词的全部元音数量后,再检查是否恰好等于2,确保只保留符合要求的单词。
  • 可选的x.lower()处理,让代码能兼容包含大写元音的场景。

内容的提问来源于stack exchange,提问作者Denzel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 11:20:32