【问题标题】:Python; Encode to MD5 (hashlib) shows error: "NoneType"Python;编码为 MD5 (hashlib) 显示错误:“NoneType”
【发布时间】:2019-02-11 05:52:47
【问题描述】:

我写了一个代码,会生成 5 次随机密码,我想将该密码编码为 MD5,但是当我尝试对其进行编码时,它会显示错误“NoneType”对象没有属性“编码” ' 而且我不知道如何更改代码以避免此错误。对不起,我是 python 的初学者......我的代码在下面。感谢帮助

import random, string
import hashlib

length = 6
chars = string.ascii_letters + string.digits

def ff():
    rnd = random.SystemRandom()
    a = (''.join(rnd.choice(chars) for i in range(length)))
    c = a
    return(c)

def ff2():
    for i in range(5):
        print(ff(),' ')


str = ff2()
result = hashlib.md5(str.encode())

print("The hexadecimal equivalent of hash is : ", end ="")
print(result.hexdigest())

【问题讨论】:

  • 应该是srt还是str?
  • 哦,谢谢通知!
  • 每当您看到NoneType 错误时,您首先想到的应该是您有一个没有返回任何内容的函数。并且请不要使用str等与Python类型相同的变量。

标签: python python-3.x random encode hashlib


【解决方案1】:

函数ff2 不返回任何内容,因此str 将是NoneType 类型。

【讨论】:

  • 你的答案更像是一个评论,也许你在代码中添加了更正
  • @AhmedMasud 这是问题的答案。我无法修复代码,因为没有指示代码应该做什么。
  • 抱歉没有信息。它应该生成 5 个随机密码,并将其编码为 MD5 并打印出来。 ff2() 函数应该循环 ff() 函数 5 次。
  • @MarcelKopera 将它们编码为一个字符串还是单独编码?
  • 我想在那之后将该数据导入到 csv 文件中,所以如果可能的话,我希望这些数据用空格、逗号或其他任何东西分隔
【解决方案2】:

IIUC,你的 ff2() 函数应该调用ff() 五次,但它不应该打印出结果。它应该将它们累积在一个字符串中并返回该字符串。可能是这样的:

def ff2():
    l = []
    for i in range(5):
        l.append(ff())
    return " ".join(l)

这里我们将对ff() 的五次调用的结果累加到一个列表l 中,然后 使用字符串方法join() 将它们连接在一起。 上面返回一个字符串,它是对 ff() 的调用返回的五个字符串的串联,它们之间用空格分隔。如果您想用逗号作为分隔符,只需将return " ".join(l) 替换为return ",".join(l)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多