Python; Кодирование в MD5 (hashlib) показывает ошибку: "NoneType"

Я написал код, который будет генерировать случайный пароль 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())

1 ответ

Функция ff2 ничего не возвращает так str будет типа NoneType,

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).

Другие вопросы по тегам