输入校验的核心目的是防止程序崩溃、误算或被恶意利用;需对字符串、数字、布尔值等手动转换并异常捕获,如用isdigit()校验正整数、strip()去空格、小写比对处理布尔输入。
不是为了“拦住用户”,而是防止程序因非法数据崩溃、误算或被恶意利用。比如用户输入字母却要转成整数,不校验就直接 int(input()) 会抛出 ValueError;又比如邮箱字段传入 SQL 注入语句,没过滤可能危及数据库。
Python 没有内置的“强类型输入”机制,所有 input() 返回的都是字符串,必须手动转换并捕获异常:
对白名单,避免大小写或全角字符干扰示例:安全读取正整数
while True:
s = input("请输入一个正整数:").strip()
if not s.isdigit():
print("❌ 输入不是纯数字,请重试")
continue
n = int(s)
if n <= 0:
print("❌ 必须大于0,请重试")
continue
break
print(f"合法输入:{n}")
这类校验靠正则表达式最直接。不要追求 100% 符合 RFC 标准,重点覆盖常见合法格式并拒绝明显非法输入:
立即学习“Python免费学习笔记(深入)”;
注意:正则只是第一道防线,业务规则(如“注册年龄需满18岁”)必须在格式通过后再单独判断。
用户输入永远不可信。即使做了类型和格式校验,仍要防范间接风险:
校验不是一次性的动作,而是贯穿输入→处理→输出全过程的防御意识。