Python中如何使用循环拒绝包含指定特殊字符的无效用户输入
Python输入校验功能实现说明
你现有的代码已经实现了长度校验逻辑,只需要补充禁用特殊字符的校验即可,完整可运行代码如下:
# 提前定义禁止输入的特殊字符集合 forbidden_chars = {'!', '@', '#', '$'} while True: print("禁止输入!、@、#、$四类特殊字符") answer = input("请输入长度不小于5个字符的答案:") # 两个无效条件满足任意一个就需要重新输入 if len(answer) < 5 or any(char in forbidden_chars for char in answer): print("输入不符合要求,请重新输入。") else: print("输入的字符长度符合要求!") print("校验通过!") break
逻辑说明
- 用集合存储禁用字符
{'!', '@', '#', '$'},查询字符是否属于禁用列表的效率更高,你也可以换成字符串'!@#$',功能完全一致。 - 无效判断用
len(answer) < 5 or any(char in forbidden_chars for char in answer):- 前半段判断长度是否不足5个字符
- 后半段
any()函数会遍历输入的每一个字符,只要有一个字符属于禁用集合就会返回True - 两个条件满足任意一个,就判定为输入无效,提示用户重试
- 只有长度达标、同时不包含禁用字符时,才会判定为校验成功,退出循环。
上述实现允许输入()*&^等不在禁用列表里的特殊字符,完全符合需求。
内容的提问来源于stack exchange,提问作者grunchyelliptical
相关产品推荐
相关产品推荐

