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

Python密码生成器空白输入触发ValueError,如何修正?

问题分析

你遇到的问题是:当输入空白时,int("")会直接抛出ValueError,根本走不到if lenght == None的判断逻辑——因为输入空白时,input()返回的是空字符串而非None,且强制转int的操作会先触发异常。

修改方案

需要先捕获原始输入字符串,先判断是否为空,再尝试转换为整数,同时处理非数字输入的情况。以下是修改后的代码:

import random
import string

print("Welcome to password generator!")

def password_generator():
    lowercase_data = string.ascii_lowercase
    uppercase_data = string.ascii_uppercase
    numbers = string.digits
    symbols = string.punctuation
    combined = lowercase_data + uppercase_data + numbers + symbols

    # 先获取原始输入并去除首尾空白,处理全空格输入的情况
    input_str = input("Enter your password length: ").strip()
    
    # 判断输入是否为空
    if not input_str:
        print("Please enter a valid value.")
        password_generator()
        return
    
    # 尝试转换为整数,捕获非数字输入的异常
    try:
        length = int(input_str)
    except ValueError:
        print("Please enter a valid number.")
        password_generator()
        return
    
    # 额外检查密码长度合理性,避免random.sample报错
    if length < 1:
        print("Password length must be at least 1.")
        password_generator()
        return
    
    # 生成并输出密码
    generator = random.sample(combined, length)
    password = "".join(generator)
    print(password)
    password_generator()

password_generator()
关键改动说明
  • 先获取原始输入并调用strip(),覆盖用户输入全空格的场景
  • 优先判断输入是否为空,为空则提示并重新调用函数
  • 使用try-except捕获ValueError,处理用户输入非数字的情况
  • 增加密码长度合理性校验,避免因输入0或负数导致random.sample抛出异常

内容的提问来源于stack exchange,提问作者filhaj mahamud fahim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:20:00