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
相关产品推荐
相关产品推荐

