Python密码生成脚本条件判断失效报错,求问题分析与修复
密码长度输入校验问题排查与修复
你的脚本大概率踩了这几个常见坑:
- 先做类型转换再判断输入为空:空字符串转
int直接报错,导致空输入的校验根本没机会执行 - 没处理非数字输入的异常:输入字母/符号时,
int(input())直接抛出ValueError,程序直接崩溃 - 条件判断逻辑顺序错误:比如先判断长度范围再做类型校验,或是用错逻辑运算符(比如把
and写成or)
修复思路
按优先级逐步校验,先处理最容易触发错误的场景:
- 先判断输入是否为空字符串
- 再校验输入是否为纯数字
- 转成整数后,判断是否在8-20的范围内
修正后的代码示例
minPasswordLength = 8 maxPasswordLength = 20 while True: length_input = input("请输入密码长度(8-20): ").strip() # 1. 校验输入不能为空 if not length_input: print("错误:输入不能为空,请重新输入") continue # 2. 校验输入必须为数字 if not length_input.isdigit(): print("错误:请输入有效的数字") continue # 转换为整数类型 password_length = int(length_input) # 3. 校验长度大于最小值,4. 校验长度小于最大值 if password_length < minPasswordLength or password_length > maxPasswordLength: print(f"错误:密码长度必须在{minPasswordLength}-{maxPasswordLength}之间") continue # 所有校验通过,退出循环 print(f"输入有效,密码长度设置为{password_length}") break
关键细节说明
- 用
strip()去掉输入前后的空格,避免用户输入空格被误判为有效内容 - 先判断空输入、再做数字校验,避免提前转
int导致程序崩溃 - 长度判断用
or连接两个不满足条件的情况,只要超出范围就触发错误提示
内容的提问来源于stack exchange,提问作者Stephan Koenig
相关产品推荐
相关产品推荐

