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

Python开发:统计每行中含至少2个元音的单词数量

解决方案

直接修改代码实现需求,核心是新增统计含至少2个元音的单词数量的逻辑,以下是完整代码:

lines = 0
vowels = {'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'}

with open("sentences.txt", 'r') as data:
    for lineOfText in data:
        lines += 1
        words = lineOfText.split()
        # 统计当前行中含≥2个元音的单词数
        valid_word_count = sum(
            1 for word in words
            if sum(1 for char in word if char in vowels) >= 2
        )
        # 保留原逻辑:仅输出单词总数超过6的行的目标统计值
        if len(words) > 6:
            print(valid_word_count)

关键逻辑说明

  • 用集合vowels存储所有元音字母,判断字符是否为元音的效率比字符串更高。
  • 嵌套生成器表达式快速统计:外层遍历每行的单词,内层统计单个单词的元音数量,符合条件则计数+1。
  • 使用with语句自动管理文件,避免手动关闭时出现遗漏或错误。

用str.maketrans的替代实现

你尝试的str.maketrans也能完成需求,核心是通过字符映射删除非元音字符,再判断剩余字符长度是否≥2:

lines = 0
# 创建非元音字符的删除映射表
trans_table = str.maketrans('', '', 'bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ')

with open("sentences.txt", 'r') as data:
    for lineOfText in data:
        lines += 1
        words = lineOfText.split()
        valid_word_count = 0
        for word in words:
            # 移除单词中的所有非元音字符
            vowel_only = word.translate(trans_table)
            if len(vowel_only) >= 2:
                valid_word_count += 1
        if len(words) > 6:
            print(valid_word_count)

之前没成功大概率是没正确搭配str.translate来使用映射表,或者没把逻辑和原代码的行判断结合起来。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 20:55:25