如何在Python用户名校验逻辑中强制要求用户名恰好为5个字母
用户名校验规则修改方案
直接在原有逻辑后面补两层校验就行,实现「恰好5个字母」的强制要求:
- 第一层判断输入长度是不是刚好5位,长度不对直接拦截
- 第二层判断输入内容是不是全为字母,把数字、没加进黑名单的特殊符号全拦住
改完的完整代码:
username = input("input username= ") to_deny = ["!", "?", " ", "/", ",", ".", "[", "]", "(", ")"] if any(char in username for char in to_deny): print("denied characters: ?, !, space(s), /, dots, [], ()") quit() # 校验长度必须为5 if len(username) != 5: print("Error: username must be exactly 5 characters long") quit() # 校验所有字符都是字母 if not username.isalpha(): print("Error: username can only contain letters") quit() print(f"hello {username}!")
小优化点
- 原来写的
any([char in username for char in to_deny])可以把方括号去掉,直接传生成器给any(),不用先生成整个列表占内存,跑起来更快 - 要是你不需要针对列出来的那几个特殊符号返回单独的报错提示,甚至可以把
to_deny那整段逻辑删掉,str.isalpha()本身就会拦截所有非字母字符,包括你列的这些符号、数字、其他特殊字符,不会漏 - 校验顺序可以自行调整,把长度判断放最前面也可以,长度不对直接返回,不用遍历字符查黑名单,性能更好
内容的提问来源于stack exchange,提问作者IUseAndroidBtw
相关产品推荐
相关产品推荐

