You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python密码生成脚本条件判断失效报错,求问题分析与修复

密码长度输入校验问题排查与修复

你的脚本大概率踩了这几个常见坑:

  • 先做类型转换再判断输入为空:空字符串转int直接报错,导致空输入的校验根本没机会执行
  • 没处理非数字输入的异常:输入字母/符号时,int(input())直接抛出ValueError,程序直接崩溃
  • 条件判断逻辑顺序错误:比如先判断长度范围再做类型校验,或是用错逻辑运算符(比如把and写成or)

修复思路

按优先级逐步校验,先处理最容易触发错误的场景:

  1. 先判断输入是否为空字符串
  2. 再校验输入是否为纯数字
  3. 转成整数后,判断是否在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 23:35:33