Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 27, 2010 14:59:48

DimaHP
От:
Зарегистрирован: 2010-02-27
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

ПомогитеПлиииз)

Надеюсь очень на Вашу помощь. Нужно создать простую программу экспоненциальной или факториальной сложности в Питоне 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)

Офлайн

#2 Фев. 27, 2010 15:33:38

dartNNN
От:
Зарегистрирован: 2009-12-08
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

ПомогитеПлиииз)

Все намного проще, чем вы думаете:)

берем модуль 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)
Оно? Заодно глянте полные доки на этот модуль, там столько всего:)
И заодно почитайте “Dive Into Python 3” (собственно пример прям оттуда скопипастил:))



Офлайн

#3 Фев. 27, 2010 15:39:08

DimaHP
От:
Зарегистрирован: 2010-02-27
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

ПомогитеПлиииз)

Благодарю за ответ. Я еще раз повторяюсь, что я нуб в Питоне ))) Мне в эту задачу, что я написал надо добавить perms = itertools.permutations(, 2) ? если да, то куда? Вы не могли бы на моей задаче конкретно написать что и куда вставлять?))Я вообще не знаком с модулями и без понятия как их использовать. Мне нужно именно эта задача и с этими условиями на Питоне 3.1….



Отредактировано (Фев. 27, 2010 15:42:06)

Офлайн

#4 Фев. 27, 2010 16:32:25

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

ПомогитеПлиииз)

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
почитай же доки



Офлайн

#5 Фев. 27, 2010 16:47:08

DimaHP
От:
Зарегистрирован: 2010-02-27
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

ПомогитеПлиииз)

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)
Вы это имели ввиду ? Если да, то выдает ошибку -TypeError: Expected int as r
Пробывал только эту строку
 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)
Таже ошибка…
Да я читаю уже про itertools, со вчерашнего дня сижу над этой задачей просто)itertools только в питоне 2.6 может работает?



Отредактировано (Фев. 27, 2010 17:24:45)

Офлайн

#6 Фев. 27, 2010 17:33:25

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

ПомогитеПлиииз)

itertools работает нормально..
просто импорт сделай правильным, без отступа в один пробел!!! это же Питон.



Офлайн

#7 Фев. 27, 2010 17:38:40

DimaHP
От:
Зарегистрирован: 2010-02-27
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

ПомогитеПлиииз)

Это скопировал неправильно просто) Ошибка таже

import itertools
print("Напишите длину пароля")
pwdLen=input()
b = ['A','B','C']
omg = itertools.permutations(b)
for resultat in omg:
print(resultat)
Вот так работает, но если вставить туда длину пароля, т.е pwdLen, то выдает ошибку TypeError: Expected int as r



Офлайн

#8 Фев. 27, 2010 17:52:19

DimaHP
От:
Зарегистрирован: 2010-02-27
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

ПомогитеПлиииз)

Ошибка в том, что возможно в Питоне 3.1 input() комманда используется по другому, если я поставлю pwdLen =5, и в omg = itertools.permutations(b, pwdLen), то все отлично работает. Но когда использую input() - ОШИБКА. Поиогите разобраться с этим..



Офлайн

#9 Фев. 27, 2010 17:58:01

knkd
От:
Зарегистрирован: 2009-06-14
Сообщения: 225
Репутация: +  0  -
Профиль   Отправить e-mail  

ПомогитеПлиииз)

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)
Блин, кстати забыл что в Python выдаёт символы по классу. Например по “А-Я” выдаст полный алфавит.
Что то такое когдато читал, но забыл…



Отредактировано (Фев. 27, 2010 17:59:02)

Офлайн

#10 Фев. 27, 2010 18:09:08

DimaHP
От:
Зарегистрирован: 2010-02-27
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

ПомогитеПлиииз)

Ура, сработало !!!Спасибо Всем большое)))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)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version