Задача:
Напишите программу, которая генерирует случайный набор паролей заданной длины и выводит их на экран. Python.
План:
- Алгоритм решения
- Код программы
- Примеры входных данных и ожидаемых результатов
- Объяснение кода программы
- Блок-схема
Алгоритм решения:
-
Импорт необходимых модулей:
random
для генерации случайных выборовstring
для доступа к наборам символов
-
Определение функции
generate_password(length)
:- Создание строки
characters
, содержащей все допустимые символы (буквы, цифры, знаки пунктуации) - Генерация пароля путем случайного выбора
length
символов изcharacters
- Возврат сгенерированного пароля
- Создание строки
-
Определение функции
generate_password_set(num_passwords, length)
:- Создание списка паролей, вызывая
generate_password(length)
num_passwords
раз - Возврат списка сгенерированных паролей
- Создание списка паролей, вызывая
-
Определение функции
main()
:- Запрос у пользователя количества паролей и их длины
- Вызов
generate_password_set()
с введенными параметрами - Вывод сгенерированных паролей на экран
-
Проверка, является ли скрипт основной программой:
- Если да, вызов функции
main()
- Если да, вызов функции
Код программы на языке Python:
Код Python
import random
import string
def generate_password(length):
characters = string.ascii_letters + string.digits + string.punctuation
password = ''.join(random.choice(characters) for _ in range(length))
return password
def generate_password_set(num_passwords, length):
passwords = [generate_password(length) for _ in range(num_passwords)]
return passwords
def main():
num_passwords = int(input("Enter the number of passwords to generate: "))
password_length = int(input("Enter the desired password length: "))
password_set = generate_password_set(num_passwords, password_length)
print("\nGenerated Passwords:")
for i, password in enumerate(password_set, 1):
print(f"Password {i}: {password}")
if __name__ == "__main__":
main()
Примеры входных данных и ожидаемых результатов:
Пример 1:
Входные данные:
Enter the number of passwords to generate: 3
Enter the desired password length: 8
Ожидаемый результат:
Generated Passwords:
Password 1: Kj8$mP3q
Password 2: 9xZ#nL7R
Password 3: Tb2@fH5Y
Пример 2:
Входные данные:
Enter the number of passwords to generate: 5
Enter the desired password length: 12
Ожидаемый результат:
Generated Passwords:
Password 1: p7X$mN9k@Lz2
Password 2: Qs3#bV8y*Fj6
Password 3: Rw1%hT4c&Gm9
Password 4: Ut5^dA2x!Ky7
Password 5: Zn6&eE7v@Bq1
Пример 3:
Входные данные:
Enter the number of passwords to generate: 2
Enter the desired password length: 16
Ожидаемый результат:
Generated Passwords:
Password 1: 9xK#mP3q$Lz2Rb7Y
Password 2: Ht6%fJ8w@Nv1Gy5S
Объяснение кода программы:
-
Импорт необходимых модулей:
Импортируются модулиimport random import string
random
для генерации случайных значений иstring
для доступа к наборам символов. -
Функция генерации одного пароля:
Создается строкаdef generate_password(length): characters = string.ascii_letters + string.digits + string.punctuation password = ''.join(random.choice(characters) for _ in range(length)) return password
characters
, содержащая все буквы, цифры и знаки пунктуации. Затем генерируется пароль заданной длины, выбирая случайные символы изcharacters
. -
Функция генерации набора паролей:
Создается список паролей заданной длины и количества, используя функциюdef generate_password_set(num_passwords, length): passwords = [generate_password(length) for _ in range(num_passwords)] return passwords
generate_password
. -
Основная функция программы:
Запрашивается количество паролей и их длина, генерируется набор паролей и выводится на экран.def main(): num_passwords = int(input("Enter the number of passwords to generate: ")) password_length = int(input("Enter the desired password length: ")) password_set = generate_password_set(num_passwords, password_length) print("\nGenerated Passwords:") for i, password in enumerate(password_set, 1): print(f"Password {i}: {password}")
-
Точка входа в программу:
Проверяется, запущен ли скрипт напрямую, и если да, вызывается функцияif __name__ == "__main__": main()
main()
.