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

Python密码生成器如何实现输入非法时自动重跑脚本

实现方法

不需要在校验失败时退出脚本,直接用while True无限循环包裹输入、校验逻辑,即可实现输入不合法时自动引导用户重新输入,校验全通过后再执行后续密码生成流程。

原代码可优化点

  • 输入逻辑仅执行1次,校验失败直接终止程序,无法重输
  • 重复多次判断pass_length.isnumeric(),逻辑冗余
  • 长度校验、输入校验拆分零散,维护成本高
  • 密码生成函数直接依赖全局字符串变量,没有显式传参,逻辑耦合

调整后完整代码

import random
import sys


print("Password Generator")    
print("* Attention: - You may not generate a password with more than 70 characters\n"
      "             - You may not enter letters")

characters = "abcdefghijklmnopqrstuvwxyz" \
             "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*"

def password_gen_start(pwd_len):
    password = "".join(random.sample(characters, pwd_len))
    print("Your password has been generated: " + password)

# 循环处理输入校验
while True:
    pass_length = input("Enter your password length: ")
    # 校验是否为纯数字
    if not pass_length.isnumeric():
        print("Natural numbers only!")
        continue
    pwd_len = int(pass_length)
    # 校验长度上限
    if pwd_len >= 71:
        print("Password cannot be longer than 70 characters!")
        continue
    # 所有校验通过,跳出循环
    break

# 生成密码
password_gen_start(pwd_len)

关键逻辑说明

  • 校验不通过时,不需要调用sys.exit()终止程序,打印错误提示后执行continue即可直接回到循环开头,重新展示输入提示
  • 所有校验规则全部收拢在循环内,不需要重复做类型转换、格式判断,代码更简洁
  • 所有校验通过后执行break跳出输入循环,再执行密码生成逻辑,流程清晰

内容的提问来源于stack exchange,提问作者Phạm Đức Tuấn

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:45:42