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