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

Генератор визуально различимых паролей (A)

19.02.2018, 19:12. Показов 38720. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Требуется по запросу выдавать 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 символов: ZdmtPhz
10 случайных паролей длиной 15 символов:
H2YuebGj9mwgXUp
9P4WRMeu8GmpZa3
Bpje6wgvC72kxJn
7U5SbRMrkgYNGuT
GMBWavKAdHi5jr7
CXTYJNwcdazDtLP
g9MjduQWhivCwVH
H9vats8jF6A3xr4
mcvxtXNujkKiz68
mTCQ4Wi5yqPBtgv
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.02.2018, 19:12
Ответы с готовыми решениями:

Генератор визуально различимых паролей (B)
Генератор визуально различимых паролей (B) Ограничение времени 5 секунд Ограничение памяти 64Mb...

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

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

Генератор визуально различимых паролей (A + B)
Требуется по запросу выдавать N различных паролей длиной M символов, состоящих из строчных и...

11
1291 / 908 / 479
Регистрация: 05.12.2013
Сообщений: 3,073
19.02.2018, 19:50 2
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from random import randint
 
symbols = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789'
 
def generate_password(m):
    str = ''
    for x in range(m):
        str += symbols[randint(0,len(symbols))]
    return str
 
def main(n, m):
    return [generate_password(m) for _ in range(n)]
 
print(generate_password(7))
print(*main(7,8), sep='\n')
1
10 / 59 / 21
Регистрация: 12.03.2017
Сообщений: 514
19.02.2018, 19:55  [ТС] 3
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from random import randint
 
symbols = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789'
 
def generate_password(m):
    str = ''
    for x in range(m):
        str += symbols[randint(0,len(symbols))]
    return str
 
def main(n, m):
    return [generate_password(m) for _ in range(n)]
 
print("Случайный пароль из 7 символов:", generate_password(7))  
print("10 случайных паролей длиной 15 символов:")  
print(*main(10, 15), sep="\n")
Пишет ошибку когда вставляю пример ввода! А так спасибо! Если можно то исправьте!
0
1291 / 908 / 479
Регистрация: 05.12.2013
Сообщений: 3,073
19.02.2018, 20:00 4
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from random import randint
 
symbols = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789'
 
def generate_password(m):
    str = ''
    for x in range(m):
        str += symbols[randint(0,len(symbols)-1)]
    return str
 
def main(n, m):
    return [generate_password(m) for _ in range(n)]
 
print("Случайный пароль из 7 символов:", generate_password(7))  
print("10 случайных паролей длиной 15 символов:")  
print(*main(10, 15), sep="\n")
1
10 / 59 / 21
Регистрация: 12.03.2017
Сообщений: 514
19.02.2018, 20:05  [ТС] 5
Тест 2

Ресурсы 43ms/4.36Mb

Ввод

1 10

Вывод программы

Случайный пароль из 7 символов: UJR26aJ
10 случайных паролей длиной 15 символов:
BzEw7KMW7uAkJNw
Z6pifyEdJ2HHBfm
xWJcd49RfsBRta8
9FT3uWiPGfHFtf2
7Y5wQmrMBmrmUYE
Fi99ZeFw4KxBVFY
5VNfaQ9qDJmTJpM
zV5Ttrt4xYuyBu5
YB72ustJqQVYiNc
y3rCmYkuyCxhgiL

Правильный ответ

ok

Stderr

Traceback (most recent call last):
File "test.py", line 17, in <module>
check_password(password, m)
File "test.py", line 6, in check_password
assert len(set(password)) == m, "повторяются символы в пароле: " + password
AssertionError: повторяются символы в пароле: XFLh53magF
make: *** [run] Error 1
0
1291 / 908 / 479
Регистрация: 05.12.2013
Сообщений: 3,073
19.02.2018, 20:34 6
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from random import randint
 
symbols = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789'
 
def generate_password(m):
    a = set()
    while len(a) < m:
        a.add(randint(0,len(symbols)-1))
    str = ''
    for x in a:
        str += symbols[x]
    return str
 
def main(n, m):
    return [generate_password(m) for _ in range(n)]
 
print("Случайный пароль из 7 символов:", generate_password(7))  
print("10 случайных паролей длиной 15 символов:")  
print(*main(10, 15), sep="\n")
1
928 / 690 / 269
Регистрация: 10.12.2016
Сообщений: 1,696
19.02.2018, 20:42 7
чтобы не повторялись лучше random.sample
Python
1
2
3
4
5
6
7
8
9
10
>>> from random import sample
>>> import string
>>> lst = string.ascii_letters + string.digits
>>> ''.join(sample(lst,16))
'A2RBOYqS7MpdJimk'
>>> ''.join(sample(lst,16))
'xvhu2U8jFo4ORgKy'
>>> ''.join(sample(lst,16))
'D9bTwomQlatBP5Jp'
>>>
1
1291 / 908 / 479
Регистрация: 05.12.2013
Сообщений: 3,073
19.02.2018, 20:49 8
Тогда будет так

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
from random import sample
import string
 
symbols = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789'
 
def generate_password(m):
    return ''.join(sample(symbols,m))
 
def main(n, m):
    return [generate_password(m) for _ in range(n)]
 
print("Случайный пароль из 7 символов:", generate_password(7))  
print("10 случайных паролей длиной 15 символов:")  
print(*main(10, 15), sep="\n")
1
10 / 59 / 21
Регистрация: 12.03.2017
Сообщений: 514
19.02.2018, 21:05  [ТС] 9
Тест 3

Ресурсы 43ms/4.35Mb

Ввод

10 1

Правильный ответ

ok

Stderr

Traceback (most recent call last):
File "test.py", line 15, in <module>
assert len(set(passwords)) == n, "пароли повторяются"
AssertionError: пароли повторяются
make: *** [run] Error 1

Сообщение чекера

Completion status: ABNORMAL_EXIT
Term sig: null
Error code: 2
0
1291 / 908 / 479
Регистрация: 05.12.2013
Сообщений: 3,073
19.02.2018, 21:18 10
Лучший ответ Сообщение было отмечено Pavlin234 как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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
 
print("Случайный пароль из 7 символов:", generate_password(7))  
print("10 случайных паролей длиной 15 символов:")  
print(*main(10, 15), sep="\n")
4
5 / 4 / 0
Регистрация: 08.01.2019
Сообщений: 8
11.05.2021, 09:46 11
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import string
from random import choices, sample
 
 
def generate_password(m):
    password_symbol = set(string.ascii_letters + string.digits)
    not_password_symbol = {'l', 'I', '1', 'o', 'O', '0'}
    password_symbol -= not_password_symbol
    return ''.join(sample(list(password_symbol), m))
 
 
def main(n, m):
    i = 0
    psw_list = []
    while i < n:
        psw = generate_password(m)
        if psw not in psw_list:
            psw_list.append(psw)
            i += 1    
    return psw_list
3
257 / 143 / 85
Регистрация: 13.10.2011
Сообщений: 454
11.05.2021, 12:40 12
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from random import *
def generate_password(m):
    bez='lI10O'
    s=''
    while len(s)<m:
        if randint(0,2)==0:s+=chr(ord('a')+randint(0,25))
        elif randint(0,2)==1:s+=chr(ord('A')+randint(0,25))
        else: s+=chr(ord('0')+randint(0,9))
        if s[-1] in bez or s[-1] in s[:-1]: s=s[:-1]
    return s
def main(n,m):
    a=[]
    for i in range(n):
        print(generate_password(m))
    a.append(generate_password(m))
    return a
m=int(input("Какая длинна пароля? "))
n=int(input("Сколько паролей? "))
print(*main(n,m))
Добавлено через 7 минут
Исправил:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
from random import *
def generate_password(m):
    bez='lI10O'
    s=''
    while len(s)<m:
        if randint(0,2)==0:s+=chr(ord('a')+randint(0,25))
        elif randint(0,2)==1:s+=chr(ord('A')+randint(0,25))
        else: s+=chr(ord('0')+randint(0,9))
        if s[-1] in bez or s[-1] in s[:-1]: s=s[:-1]
    return s
def main(n,m):
    a=[]
    for i in range(n):
        a.append(generate_password(m))
    return a
m=int(input("Какая длинна пароля? "))
n=int(input("Сколько паролей? "))
print(*main(n,m),sep='\n')
0
11.05.2021, 12:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2021, 12:40
Помогаю со студенческими работами здесь

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

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

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

Генератор визуально различимых паролей (A + B)
есть такой код, но не проходит по времени, подскажите, как можно оптимизировать # -*- coding:...

Генератор визуально различимых паролей (A + B)
Требуется по запросу выдавать N различных паролей длиной M символов, состоящих из строчных и...

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru