Python Crash Course习题5-10:用户名查重代码正确性问询
关于用户名大小写不敏感验证代码的解答
你的初始代码完全符合习题要求,逻辑简洁且完善,冗余代码里的额外判断是多余的,具体说明如下:
初始代码的正确性逻辑
初始代码的核心是统一大小写后再做对比:
- 先将所有现有用户名转换为大写,存入
current_users_upper列表 - 遍历新用户名时,把每个新用户名也转为大写,再去
current_users_upper中查找
这种方式能覆盖所有大小写不敏感的场景:不管新用户名是全小写、全大写还是混合大小写(比如Kenny5、KENNY5),转成大写后都会和现有用户名的大写版本(KENNY5)匹配,从而准确识别重复。
冗余代码的多余之处
你冗余代码里的elif new_user in current_users判断完全没必要:
如果新用户名和现有用户名完全一致(包括大小写),那么new_user.upper()必然等于该现有用户名的upper()结果,此时第一个if条件已经会触发,这个elif分支永远不会被执行到,属于无效的冗余判断。
可选优化建议(非必需)
如果后续需要处理大规模用户数据,可以把current_users_upper改成集合:
current_users_upper = {user.upper() for user in current_users}
集合的成员查找操作(in)效率比列表更高(时间复杂度从O(n)降到O(1)),但对于习题中的小规模数据,列表的性能完全够用。
内容的提问来源于stack exchange,提问作者Kenny Smith
相关产品推荐
相关产品推荐

