Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с генерацией пароля

z20b3w Ученик (68), на голосовании 1 месяц назад
Напиши функцию generate_password() которая генерирует надежный пароль из латинских букв (строчных и заглавных) и арабских цифр.


Вызов функции без аргумента возвращает пароль из 6-ти символов.

Вызов функции с аргументом в виде числа n возвращает пароль из n-го количества символов.

Вывод:

Функция должна возвращать пароль.

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



Символы:
Строчные буквы: abcdefghijklmnopqrstuvwxyz

Заглавные буквы: ABCDEFGHIJKLMNOPQRSTUVWXYZ

Арабские цифры: 0123456789

Либо можно использовать модуль string.



Код

import random

def generate_password # Продолжи решение тут
Голосование за лучший ответ
Mr. Втулка Мастер (2047) 2 месяца назад
Может так?

import random
import string

def generate_password(n=6):
password_characters = string.ascii_letters + string.digits
password = ''.join(random.choice(password_characters) for i in range(n))
return password

# Testing
print(generate_password())
print(generate_password(8))
больше не чат гпт ???? Мыслитель (9093) 2 месяца назад
Конечно, я помогу вам написать функцию `generate_password()`, которая будет генерировать надежные пароли согласно вашим требованиям. Мы будем использовать модуль `string` для получения нужных символов и модуль `random` для случайного выбора символов.

Вот полный код функции:
 import random 
import string

def generate_password(n=6):
"""
Генерирует надежный пароль из латинских букв (строчных и заглавных) и арабских цифр.

:param n: Длина пароля (по умолчанию 6 символов)
:return: Сгенерированный пароль в виде строки
"""
# Определяем набор допустимых символов
characters = string.ascii_letters + string.digits
# Генерируем пароль, выбирая случайные символы из набора
password = ''.join(random.choice(characters) for _ in range(n))
return password

# Примеры использования:
print(generate_password()) # Пример вывода: aB3dE1
print(generate_password(10)) # Пример вывода: Z9xY2wV8bC


### Пояснение кода:

1. **Импорт модулей:**
- `import random` — модуль для генерации случайных чисел и выбора случайных элементов.
- `import string` — модуль, содержащий наборы символов, таких как `ascii_letters` и `digits`.

2. **Определение функции `generate_password`:**
- Функция принимает один параметр `n` с значением по умолчанию `6`. Это означает, что если при вызове функции аргумент не передан, пароль будет состоять из 6 символов.
- `characters = string.ascii_letters + string.digits` — объединяем строчные и заглавные латинские буквы с арабскими цифрами, получая полный набор допустимых символов для пароля.
- `password = ''.join(random.choice(characters) for _ in range(n))` — генерируем пароль, выбирая случайный символ из `characters` `n` раз и объединяя их в одну строку.
- `return password` — возвращаем сгенерированный пароль.

3. **Примеры использования:**
- `generate_password()` — вызов функции без аргумента, возвращает пароль из 6 символов.
- `generate_password(10)` — вызов функции с аргументом `10`, возвращает пароль из 10 символов.

### Тестирование

Для проверки функции вы можете вызвать её несколько раз и убедиться, что длина возвращаемого пароля соответствует ожидаемой:
 # Тест без аргумента 
pwd1 = generate_password()
assert len(pwd1) == 6
print(f"Пароль из 6 символов: {pwd1}")

# Тест с аргументом
pwd2 = generate_password(12)
assert len(pwd2) == 12
print(f"Пароль из 12 символов: {pwd2}")

Эти тесты проверяют, что функция возвращает строки нужной длины. Поскольку пароли генерируются случайно, их содержимое будет различаться при каждом запуске.
Похожие вопросы