Выполнение модуля, хранящегося в виде строковых значений - PullRequest
0 голосов
/ 19 июня 2020

Я вызываю строковую и случайную функцию, чтобы создать генератор паролей. Я хочу убедиться, что он как можно более случайный, но для этого, я думаю, мне нужно вызвать функцию __ all __ from string , затем случайным образом выбрать возможное значение из списка и затем выполнить Это.

Я использую команду exe c для выполнения одной случайной строки из __ any __ , но я думаю, что exe c не работает с функциями, поскольку он возвращает None. Любое решение этого или альтернативного подхода к проблеме может быть полезным.

import random
from  string import *
from string import __all__
while True: #Loop can be ignored, it's just for giving user choice to quit or not. Will add options later
    required_length = input("Enter the length of the password : ") #Length of the password is stored
    letter = __all__ #List containing all the values of string. 
    password = '' #String which will store password
    counter = 1
    while  counter <= int(required_length):
        password = password + str(exec(random.choice(letter))) #Problematic part, the exec statment return None 
        counter += 1
    print (password)

1 Ответ

0 голосов
/ 19 июня 2020

Вы можете использовать приведенный ниже код для генерации пароля из всех строковых символов.

import random
from  string import *
from string import __all__
while True: #Loop can be ignored, it's just for giving user choice to quit or not. Will add options later
    required_length = input("Enter the length of the password : ") #Length of the password is stored
    letter = "".join([eval(i) for i in __all__ if not callable(eval(i))]) #List containing all the values of string. 
    password = '' #String which will store password
    counter = 1
    while  counter <= int(required_length):
        password = password + str(random.choice(letter)) #Problematic part, the exec statment return None 
        counter += 1
    print (password)

Примечание: Возникла проблема с пробельными символами, которые не должны быть частью пароля. Так что вам нужно занести эту часть в черный список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...