Python Попытка случайного выбора значения из списка в списке приводит к ошибке TypeError: в списке не более 1 аргумента, получено 4 - PullRequest
1 голос
/ 17 апреля 2020

Я пытался много искать, но не смог найти правильного разрешения, поэтому разместил здесь. Я новичок в Python и пытаюсь создать простое приложение для генерации паролей, которое состоит из 8 символов и должно состоять из 1 заглавных букв, 1 строчных букв, 1 специального символа и 1 цифры c. Я могу получить эти вещи и создать четырехбуквенный пароль со значениями в верхнем, нижнем регистре, специальными символами и цифрами c. Для оставшихся 4 символов я хочу выбрать параметры случайным образом из списка, который состоит из всех этих параметров, но по какой-то причине я не могу получить значения для него случайным образом. Я получаю следующую ошибку, когда пытаюсь получить доступ к случайному выбору из списка в списке:

TypeError: list expected at most 1 argument, got 4

Я хотел знать, как выбрать случайное значение, которое может быть либо строчные, прописные, цифры c или специальные символы для оставшихся 4 значений в моем окончательном пароле. Я знаю, что могу использовать for l oop для выполнения sh того же, но я хотел бы сделать это случайным образом, поэтому я пробую этот подход.

Ниже приведен код, который у меня есть, и некоторые вещи, которые я пытался получить список случайных значений в списке:

import random
import string

def passwordGenerator():
    lowerchars      =   list(string.ascii_lowercase)
    upperchars      =   list(string.ascii_uppercase)
    speciachars     =   ['&','!','_','@']
    numericchars    =   list(range(0,9))
    otherrandom     =   list(string.ascii_lowercase, string.ascii_uppercase, range(0,9), ['&','!','_','@'])
    #otherrandom     =   list(list(string.ascii_lowercase), list(string.ascii_uppercase) list(range(0,9)), ['&','!','_','@'])
    print(random.choice(otherrandom))
    #print(random.choice(random.choice(otherrandom)))
    password        = random.choice(lowerchars) + random.choice(upperchars) + random.choice(speciachars) + str(random.choice(numericchars))

passwordGenerator()

1 Ответ

2 голосов
/ 17 апреля 2020

Метод list () принимает только один аргумент. Вы можете сделать

otherrandom = lowerchars + upperchars + numericchars + speciachars

При этом все списки будут сложены вместе, что, вероятно, то, что вы хотите.

...