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

生成并破解随机密码时遇NoneType无len()报错,求解决方案

问题解决:生成随机密码并破解的NoneType错误

问题根源

  • 你的nrndprint函数仅执行了print(k),没有返回生成的密码字符串。当你执行passwd = nrndprint(4)时,passwd被赋值为None(Python中无return语句的函数默认返回None)。
  • 后续调用crack_pass(passwd)时,len(argpass)尝试获取None的长度,触发object of type 'NoneType' has no len()错误。

修正代码

1. 修复密码生成函数

修改nrndprint,添加return语句返回生成的密码:

from random import choice
from string import ascii_lowercase 

def nrndprint(n):
    k = ''.join(choice(ascii_lowercase) for i in range(n))
    print(k)  # 保留打印,方便查看生成的密码
    return k  # 新增返回语句

2. 完整运行代码

整合修正后的完整代码:

from random import choice
from string import ascii_lowercase 
import itertools

def nrndprint(n):
    k = ''.join(choice(ascii_lowercase) for i in range(n))
    print(k)
    return k

def crack_pass(argpass):
    alplist = list(map(chr, list(range(ord('a'), ord('z')+1))))
    for combi in itertools.product(alplist, repeat=len(argpass)):
        if "".join(combi) == argpass:
            return combi
    return '-1'

passwd = nrndprint(4)
print(crack_pass(passwd))

运行结果

执行后输出与期望一致:

mqjz
('m', 'q', 'j', 'z')

内容的提问来源于stack exchange,提问作者Hazem Majeek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:01:03