Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/365: Рейтинг темы: голосов - 365, средняя оценка - 4.74
10 / 59 / 21
Регистрация: 12.03.2017
Сообщений: 514

Генерация паролей

27.03.2018, 19:34. Показов 69560. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Требуется по запросу выдавать
N
различных паролей длиной
M
символов, состоящих из строчных и прописных латинских букв и цифр, кроме тех, которые легко перепутать между собой: «l» (L маленькое), «I» (i большое), «1» (цифра), «o» и «O» (большая и маленькая буквы) и «0» (цифра).

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

Решение должно содержать две функции: вспомогательную generate_password(m), возвращающую случайный пароль длиной
m
символов, и основную main(n, m), возвращающую список из
n
различных паролей, каждый длиной
m
символов.

Будем считать, что параметры
n
и
m
всегда таковы, что требуемые пароли возможно сгенерировать.
Формат ввода
Пример вызова ваших функций для тестирования:

print("Случайный пароль из 7 символов:" , generate_password(7))
print("10 случайных паролей длиной 15 символов:")
print(*main(10, 15), sep="\n")
Формат вывода
Пример результатов:

Случайный пароль из 7 символов: A6fXxBh
10 случайных паролей длиной 15 символов:
JebgLW4Ndzkt6rU
Q3nbTS9ERguDy2e
E98heZH32fFGVTN
hJZ5bvCrny2RFEA
rumkV5WzSHKRA9q
3Yd7exfi6HBZ98y
aUWZgjDutswnHv7
vU2x7wNQHps4nmi
a8zn23vNGipJqk7
nkQ5hCetWJ3jHRF
Примечания
Возможно, вам пригодятся константы string.ascii_uppercase, string.ascii_lowercase и string.digits из модуля string.

Используя эти программы:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
from random import sample
import string
 
symbols = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789'
 
def generate_password(m):
    return ''.join(sample(symbols,m))
 
def main(n, m):
    a = set()
    while len(a) < n:
        a.add(generate_password(m))
    return a
и эту
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import random as generate
def generate_password(m):
    pass1 = 'ABCDEFGHJKLMNPQRSTUVWXYZ'
    pass2 = 'abcdefghijkmnpqrstuvwxyz'
    pass3 = '23456789'
    pass4 = ''
    pass5 = [1,2,3]
    pass6 = 'abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789'
    for i in range(3):
        v = generate.choice(pass5)
        if v == 1:
            pass4 += generate.choice(pass1)
        elif v == 2:
            pass4 += generate.choice(pass2)
        else:   
            pass4 += generate.choice(pass3)
        if i == 0:
            if v == 1:
                pass5.remove(1)
            if v == 2:
                pass5.remove(2)
            if v == 3:
                pass5.remove(3)
        elif i == 1:
            if 3 in pass5:
                if 2 in pass5:
                    if v == 2:
                        pass5.remove(2)
                    else:
                        pass5.remove(3)
                else:
                    if v == 1:
                        pass5.remove(1)
                    else:
                        pass5.remove(3)
            else:
                if v == 1:
                    pass5.remove(1)
                else:
                    pass5.remove(2)
    for i in range(m-3):
        pass7 = generate.choice(pass6)
        pass4 += pass7
    return pass4
def main(n, m):
    pass8 = []
    for i in range(n):
        q = generate_password(m)
        while q in pass8:
            q = generate_password(m)
        pass8.append(q)
    return(pass8)
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.03.2018, 19:34
Ответы с готовыми решениями:

Генерация паролей
Требуется по запросу выдавать N различных паролей длиной M символов, состоящих из строчных и прописных латинских букв и цифр, кроме тех,...

Генерация паролей, проблема с выводом
Есть код, но ругается на вывод. Ошибка Traceback (most recent call last): File &quot;test.py&quot;, line 13, in &lt;module&gt; n, m...

Генератор паролей
Помогите составить прогу... Пароль должен состоять из 6 знаков. 1)Прервые два знака (b1, b2)- случайные заглавные буквы английского...

8
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
28.03.2018, 07:08
И? Чем второй вариант программы не нравится?
0
10 / 59 / 21
Регистрация: 12.03.2017
Сообщений: 514
28.03.2018, 07:23  [ТС]
Нужно их обЪеденить!
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
28.03.2018, 07:28
А зачем? Всё же работает.
0
10 / 59 / 21
Регистрация: 12.03.2017
Сообщений: 514
28.03.2018, 07:35  [ТС]
У меня контест бракует!
0
 Аватар для CrackAndDie
2 / 2 / 0
Регистрация: 07.04.2019
Сообщений: 3
07.04.2019, 18:04
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from random import choice
 
 
def generate_password(m):
    a = ''
    lst = '23456789qwertyuipasdfghjkzxcvbnmQWERTYUPASDFGHJKLZXCVBNM'
    b = ''
    for i in range(m):
        if i != 0:
            while b in list(a):
                b = choice(lst)
            a += b
        else:
            b = choice(lst)
            a += b
    return a
 
 
def main(n, m):
    k = []
    h = ''
    for i in range(n):
        if i != 0:
            while h in k:
                h = generate_password(m)
            k.append(h)
        else:
            h = generate_password(m)
            k.append(h)
    return k
1
2 / 2 / 0
Регистрация: 01.04.2020
Сообщений: 3
01.04.2020, 16:48
Добавлено через 3 минуты
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from random import choice
ss = 'abcdefghijkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ23456789'
def generate_password(m):
    a = ''.join(choice(ss) for i in range(m))
    return a
 
 
def main(n, m):
    k = []
    h = ''
    for i in range(n):
        if i != 0:
            while h in k:
                h = generate_password(m)
            k.append(h)
        else:
            h = generate_password(m)
            k.append(h)
    return k
1
2 / 2 / 0
Регистрация: 22.04.2020
Сообщений: 2
22.04.2020, 22:29
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from random import sample
 
 
symbols = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789'
 
  
def generate_password(m):
    return ''.join(sample(symbols, m))
 
  
def main(n, m):
    if m > 20 or m < 7:
        a = ['ok']
        return a
    a = set()
    while len(a) < n:
        a.add(generate_password(m))
    print(n, "случайных паролей длиной", m, " символов:")
    return a
 
 
a = ''
if a != '':
    print("Случайный пароль из 7 символов:", generate_password(7))  
print(*main(10, 5), sep="\n")
дает ошибку:
Ошибка
Bash
1
2
3
4
5
6
7
Traceback (most recent call last):
  File "test.py", line 16, in <module>
    check_password(password, m)
  File "test.py", line 5, in check_password
    assert len(password) == m, "не та длина пароля: " + password
AssertionError: не та длина пароля: ok
make: *** [run] Error 1
Ввод
1 1
Ожидаемый результат
ok
Вывод
ok
Makefile:5: recipe for target 'run' failed
Сообщение
Completion status: ABNORMAL_EXIT
Term sig: null
Error code: 2

Помогите исправить, пожалуйста.
1
0 / 0 / 0
Регистрация: 04.05.2020
Сообщений: 1
04.05.2020, 02:16
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import secrets
 
symbols = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789'
a = int(input("Сколько символов в паролей? "))
b = int(input("Сколько паролей? "))
count = 0
passlist = []
while count < b:
    while True:
        password = ''.join(secrets.choice(symbols) for i in range(a))
 
        if (any(c.islower() for c in password) and any(c.isupper() for c in password)
                and any(c.isdigit() for c in password)):
            break
    count += 1
    passlist.append(password)
print(passlist)
мб так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.05.2020, 02:16
Помогаю со студенческими работами здесь

Генератор паролей
Здравствуйте, как сделать генератор паролей с условием указанным в скриншотах?

Генератор паролей
Недавно начал изучать программирование, и вот решил написать свою первую программу - генератор паролей. Программа идёт нормально до тех...

Генератор паролей
Всем привет Делаю генератор паролей. Столкнулся с проблемами: 1. Получение значения слайдера 2. Вставка сгенерированного пароля в...

Много паролей
Привет, как внести в правильные пароли множество значений(8 строчка)? Через or не получается, он начинает пропускать по любому значению. ...

Проверка паролей
Надо было сделать проверку пароля по степени его сложности. Проверка делалась по следующим критериям: Символы, используемые при вводе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru