如何修复Python脚本中重复元音仅计数1次的问题?
修复字符串元音重复计数问题
原代码的问题在于逻辑错误:它是遍历元音列表,只要某个元音出现在单词中就加1,而非统计单词中每个元音字符的出现次数。这就导致同一个元音哪怕重复出现多次,也只会被计数1次。
修复方案1:基础循环版本
遍历输入单词的每一个字符,判断是否为元音,是则累加计数:
points = 0 word = input("Type a word. : ") # 用集合存储元音,查询效率比列表更高 vowels = {"a", "e", "y", "u", "i", "o", "A", "E", "Y", "U", "I", "O"} for char in word: if char in vowels: points += 1 print(f"Vowels in word: {points}")
修复方案2:简洁的生成器表达式版本
利用sum()函数结合生成器表达式,一行完成计数逻辑:
word = input("Type a word. : ") vowels = {"a", "e", "y", "u", "i", "o", "A", "E", "Y", "U", "I", "O"} vowel_count = sum(1 for char in word if char in vowels) print(f"Vowels in word: {vowel_count}")
优化方案:统一大小写处理
将输入单词转为小写(或大写),可以简化元音集合的定义,避免重复存储大小写元音:
word = input("Type a word. : ").lower() vowels = {"a", "e", "y", "u", "i", "o"} vowel_count = sum(1 for char in word if char in vowels) print(f"Vowels in word: {vowel_count}")
内容的提问来源于stack exchange,提问作者JonasHier
相关产品推荐
相关产品推荐

