Я сгенерировал случайные пароли. Теперь я хочу назначить каждый пароль каждому/разным пользователям, присутствующим в списке пользователей. но каждому пользователю назначается только последний пароль. Код ниже.
import random
chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456!@#$%^&*()"
users=['A','B','C']
users_count= 0
for i in users:
users_count = users_count + 1
# print (str(users_count))
pass_len=int(input("Password length = "))
pass_count=users_count
for i in range(0,pass_count):
password = ""
for i in range(0,pass_len):
pass_chars= random.choice(chars)
password=password+pass_chars
print("all pass are : " ,password)
for user in users:
print(user," Password : ",password)
Вывод такой:
Password length = 5
all pass are : As6iI
all pass are : FhAIX
all pass are : fjJBH
A Password : fjJBH
B Password : fjJBH
C Password : fjJBH
«пароль» - это переменная, которая может иметь только одно значение за раз, когда вы меняете значение пароля в цикле, когда цикл заканчивается, остается только последнее значение.
Создайте массив и добавьте к нему пароли в цикле, затем вызовите массив в цикле для каждого пользователя.
Используйте словарь для хранения пар <пользователь, пароль>.
user_passwords = {}
for user in users: # For each user
password = ""
for i in range(0, pass_len): # Lets generate the password
password = password + random.choice(chars) # Add a random character
user_passwords[user] = password # assign the password to the user
for user in users:
print(user," Password : ",user_passwords[user])
или более короткая версия:
user_passwords = {}
for user in users:
for i in range(0, pass_len):
user_passwords[user] = user_passwords.get(user, "") + random.choice(chars)
for user in users:
print(user," Password : ",user_passwords[user])
Проблема с вашим кодом:
password = ""
for i in range(0,pass_len):
pass_chars= random.choice(chars)
password=password+pass_chars
print("all pass are : " ,password)
# <-- Missing assigning the password to the user
заключалась в том, что вы генерировали случайные пароли, но не назначали их пользователям.
но каждому пользователю назначается только последний пароль. Код ниже.
Это потому, что вы перебирали пользователей, всегда печатая последний пароль, который был сгенерирован ранее:
for user in users:
print(user," Password : ",password)