【问题标题】:Password Generating program in pythonpython中的密码生成程序
【发布时间】:2020-12-10 19:17:43
【问题描述】:

我生成了随机密码。现在我想将每个密码分配给用户列表中的每个/不同用户。但只有最后一个密码被分配给每个用户。代码如下。

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

【问题讨论】:

    标签: python python-3.x passwords new-operator solution


    【解决方案1】:

    使用字典来存储 对。

    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)
    

    【讨论】:

      【解决方案2】:

      'password'是一个变量,一次只能有一个值,当你在一个循环中改变密码的值时,当循环结束时,只保留最后一个值。

      创建一个数组并循环附加密码,然后为每个用户循环调用该数组。

      【讨论】:

        猜你喜欢
        • 2021-03-29
        • 2011-04-20
        • 2017-10-18
        • 2011-03-16
        • 2014-01-31
        • 2013-10-06
        • 2012-01-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多