随机挑选列表中的列表

时间:2017-09-29 18:43:16

标签: python

我正在尝试制作密码生成器。我列出了包含所有数字和字母的列表。我试图将所有列表添加到一个大列表中,然后从每个位置的随机列表中随机选择一个。

def generator():
    password=['','','','','','','','','','','']
    symbols=['£','$','%','^','&','*','_']
    numbers=[0,1,2,3,4,5,6,7,8,9]
    letter=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
    Uletter=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
    password[0]=random.choice(numbers)
    password[1]=random.choice(numbers)
    password[2]=random.choice(numbers)
    password[3]=random.choice(numbers)
    password[4]=random.choice(numbers)
    password[5]=random.choice(numbers)
    password[6]=random.choice(numbers)
    password[7]=random.choice(numbers)
    password[8]=random.choice(numbers)
    password[9]=random.choice(numbers)
    password[10]=random.choice(numbers)
    print(password)

我知道每个插槽都有random.choice(数字),但这只是为了节省时间,直到我让发电机工作。

2 个答案:

答案 0 :(得分:0)

all_chars = symbols + numbers + letter + Uletter
password = ''.join(str(random.choice(all_chars)) for i in range(11))

请注意,您必须包含str(),因为numbers的元素是整数,而不是字符串。

答案 1 :(得分:0)

我通常会回答@Kerricks的答案,但是为了向您展示其他一些稍长的选项:

import random
import string

numbers = [str(x) for x in range(10)]
lower_case_letters = [x for x in string.lowercase]
upper_case_letters = [x for x in string.uppercase]
symbols = ['$', '%', '^', '&', '*', '_']

all_chars = numbers + lower_case_letters + upper_case_letters + symbols

password = ''

for x in range(11):
    password += random.choice(all_chars)

print(password)

这演示了如何生成转换为字符串的数字列表。如何使用strings库获取大写和小写字母,如何连接列表,以及如何使用random.choice从完整的all_chars列表中选择随机选择。 HTH。

哦顺便说一下:不要,不要在现实生活中生成这样的密码。请。