Python元音辅音统计代码异常排查及优化建议请求
问题排查与改进方案
代码中的错误点
- 逻辑错误:原代码的
else分支仅在字符为空格时执行cons +=1,完全搞反了逻辑——辅音应该是非空格且不属于元音的字符,空格既不是元音也不是辅音,不应被统计到辅音中。 - 拼写错误:输出语句里的
Totle是拼写错误,正确应为Total。 - 遍历方式冗余:用
for i in range(0,len(a))再通过a[i]取字符的写法没必要,Python可直接遍历字符串的每个字符,更直观简洁。 - 元音判断繁琐:一堆
or判断重复冗余,用集合存储元音后直接判断字符是否在集合里,代码更简洁且执行效率更高。
修正后的代码
a = input("Enter the string:-") vowel = 0 cons = 0 # 用集合存储元音,大小写都包含,判断更高效 vowels_set = {'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'} for char in a: if char != " ": if char in vowels_set: vowel += 1 else: cons += 1 print("Total vowels:-", vowel) print("Total cons:-", cons)
额外改进建议
- 可以把字符转成小写(或大写)后再判断,减少集合元素数量,让代码更简洁:
for char in a: if char != " ": if char.lower() in {'a','e','i','o','u'}: vowel +=1 else: cons +=1 - 若需要仅统计字母类字符(排除数字、符号等),可加入
char.isalpha()判断:for char in a: if char.isalpha(): if char.lower() in {'a','e','i','o','u'}: vowel +=1 else: cons +=1
内容的提问来源于stack exchange,提问作者raksh rajput
相关产品推荐
相关产品推荐

