Форум сайта python.su
Надеюсь очень на Вашу помощь. Нужно создать простую программу экспоненциальной или факториальной сложности в Питоне 3.1 (число Фибоначи не подходит). Сам сделать не могу , потому что нуб ))) Или же помогите доделать программу до конца. Смысл в том что, у пользователся спрашивается длина пароля(например n=2), потом выдаются все вариации пароля из английского алфавита от a -z. Получится должно :
aa,ab,ac…ba,bb,bc…ca,cb и т.д. Как исправить эту программу? Заранее спасибо, Дмитрий
print (“Напишите длину пароля”)
длина_пароля=input()
b =
def perm(algus,veel):
if len(veel)==1:
print(algus+veel)
else:
for i in range(0,len(veel)):
perm(algus+veel,veel+veel)
perm(' ',b)
Получается что выдаются все вариации из алфавита, а мне нужно только конкретные вариации по запросу пользователся, если пользователь выбирает длину пароля 2, то и выдается длина пароля из 2 букв различных вариаций….Надеюсь Вы поняли меня)))
Отредактировано (Фев. 27, 2010 15:04:04)
Офлайн
Все намного проще, чем вы думаете:)
берем модуль itertools из стандартной библиотеки и начинаем веселиться:
>>> perms = itertools.permutations([1, 2, 3], 2)
>>> next(perms)
(1, 2)
>>> next(perms)
(1, 3)
>>> next(perms)
(2, 1)
>>> next(perms)
(2, 3)
>>> next(perms)
(3, 1)
>>> next(perms)
(3, 2)
Офлайн
Благодарю за ответ. Я еще раз повторяюсь, что я нуб в Питоне ))) Мне в эту задачу, что я написал надо добавить perms = itertools.permutations(, 2) ? если да, то куда? Вы не могли бы на моей задаче конкретно написать что и куда вставлять?))Я вообще не знаком с модулями и без понятия как их использовать. Мне нужно именно эта задача и с этими условиями на Питоне 3.1….
Отредактировано (Фев. 27, 2010 15:42:06)
Офлайн
print("Напишите длину пароля")
pwdLen=input()
b = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V', 'W','X','Y','Z']
for pwd in itertools.permutations(b, pwdLen):
print pwd
Офлайн
import itertools
print("Напишите длину пароля")
pwdLen=input()
b = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V', 'W','X','Y','Z']
for pwd in itertools.permutations(b, pwdLen):
print (pwd)
def perm(algus,veel):
if len(veel)==1:
print(algus+veel[0])
else:
for i in range(0,len(veel)):
perm(algus+veel[i],veel[:i]+veel[i+1:])
perm(' ',b)
import itertools
print("Напишите длину пароля")
pwdLen=input()
b = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V', 'W','X','Y','Z']
for pwd in itertools.permutations(b, pwdLen):
print (pwd)
Отредактировано (Фев. 27, 2010 17:24:45)
Офлайн
itertools работает нормально..
просто импорт сделай правильным, без отступа в один пробел!!! это же Питон.
Офлайн
Это скопировал неправильно просто) Ошибка таже
import itertools
print("Напишите длину пароля")
pwdLen=input()
b = ['A','B','C']
omg = itertools.permutations(b)
for resultat in omg:
print(resultat)
Офлайн
Ошибка в том, что возможно в Питоне 3.1 input() комманда используется по другому, если я поставлю pwdLen =5, и в omg = itertools.permutations(b, pwdLen), то все отлично работает. Но когда использую input() - ОШИБКА. Поиогите разобраться с этим..
Офлайн
input(3.1) == raw_input(2.6)
import itertools
print("Напишите длину пароля")
pwd_len=int(input())
b = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V', 'W','X','Y','Z']
omg = itertools.permutations(b, pwd_len)
for resultat in omg:
print(resultat)
Отредактировано (Фев. 27, 2010 17:59:02)
Офлайн
Ура, сработало !!!Спасибо Всем большое)))knkd Тебе особенно)))Единственно, что не правильно, то что выдается:
A.B.C
A.B.D
A.B.E
A.B.F
а должно:
A.A.A
A.A.B
A.A.C
A.A.D
…….
A.B.A
A.B.C
…..
=))))
Отредактировано (Фев. 27, 2010 18:28:58)
Офлайн