Метод join() не работает
import random
def create_pswrd():
global password
password = ''
chars = '123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'
length = '8'
list_chars = list(chars)
random_chars = random.shuffle(list_chars)
filter1 = ''.join(random_chars)
print(filter1)
for i in range(int(length)):
password += random.choice(filter1)
create_pswrd()
выдаёт ошибку:
File "C:\Users\Lenovo\Desktop\Password Generator\bin\a.py", line 10, in create_pswrd filter1 = ''.join(random_chars) TypeError: can only join an iterable
Ответы (1 шт):
Автор решения: andriy-byte
→ Ссылка
так лучше но в одну строчку и метод возвращает пароль а не меняет глобальную переменную что тоже лучше ,по умолчанию длина 8 .
def password_generator(lenght:int = 8):
return "".join(random.sample('123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM',lenght))
но есть проблема ,random.sample не работает с длинами больше длины колекции которую он получил
поетому другое решение random.choices дне можно задавать любую длину
здесь по умолчанию 64
def password_generator_(lenght: int = 64):
return "".join(random.choices(list('123456789qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM'), k=lenght))