Python统计字符总数、大小写、数字等数量的函数运行异常求助
问题排查及解决方法
错误原因
- 所有计数器的初始化逻辑都放在了for循环内部,每次遍历新字符的时候都会把之前的计数清零,最终只能统计到字符串最后一个字符的属性,无法累加得到全局的计数结果。
- 没必要两次遍历字符串,所有统计逻辑可以在一次遍历中完成,减少不必要的性能损耗。
- 变量命名使用了
str、list这类Python内置关键字/类型名,容易和内置方法冲突,属于不规范的编码习惯。
修复后代码
def countCharacter(input_str): # 所有计数器在循环外初始化,仅执行一次 letters = 0 upper = 0 lower = 0 digit = 0 others = 0 for i in input_str: if i.isalpha(): letters += 1 if i.isupper(): upper += 1 else: lower += 1 elif i.isnumeric(): digit += 1 else: others += 1 res_list = [letters, upper, lower, digit, others] return res_list print(countCharacter("wh12p3cmaLKND;'$%^&*"))
运行结果
执行上述代码会输出正确的统计结果:[10, 4, 6, 3, 7],对应总字母数10、大写字母4个、小写字母6个、数字3个、其他字符7个。
内容的提问来源于stack exchange,提问作者jay
相关产品推荐
相关产品推荐

