Python新手求助:统计长度大于5的输入用户名数量的代码问题
代码问题排查与修复方案
现有代码的问题
- 用户名存储错误:输入多个用户名的循环中,每次执行
a = input("Enter user's name one by one: ")都会直接覆盖变量a,最终a只保留最后一次输入的单个用户名,没有存储所有输入的内容,传给统计函数的参数并非多个用户名的集合。 - 统计函数返回逻辑错误:
counts函数中return count写在if判断分支内部,只要遍历到第一个符合长度要求的用户名就会直接结束函数返回结果,不会统计剩余用户名;如果没有符合要求的用户名,函数只会执行print(count),没有返回值,最终拿到的ans会是None。 - 判断条件不符合需求:需求是统计长度超过5个字符的用户名,代码中判断条件为
len(j) >= 5,包含了长度等于5的情况,和需求不符。 - 遍历逻辑错位:由于存储错误,传给
counts的a是单个字符串,函数遍历的时候会把字符串拆成单个字符判断长度,完全偏离统计用户名长度的目标。
修正后的完整代码
def counts(name_list): count = 0 for name in name_list: # 修改判断条件为长度超过5 if len(name) > 5: count += 1 # 遍历完所有用户名后再返回统计结果 return count # 初始化列表存储所有用户名 name_list = [] b = int(input("请问你要输入多少个用户名?")) for i in range(b): input_name = input("请逐个输入用户名:") name_list.append(input_name) ans = counts(name_list) print("长度超过5个字符的用户名总数为:", ans)
关键调整说明
- 新增空列表
name_list存储所有输入的用户名,每次输入后调用append()方法把新用户名加入列表,保证传给统计函数的是完整的用户名集合。 - 调整
counts函数内的return位置,等遍历完全部用户名后再返回统计结果,避免提前中断统计。 - 把长度判断条件从
>=5改为>5,匹配需求中“超过5个字符”的要求。 - 优化变量命名,提升代码可读性。
内容的提问来源于stack exchange,提问作者Mariam Izhar
相关产品推荐
相关产品推荐

