Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 13, 2012 06:13:46

@cckyi_boxxx
От:
Зарегистрирован: 2012-01-13
Сообщения: 181
Репутация: +  14  -
Профиль   Отправить e-mail  

нужна помошь по нескольким вопросам

вобщем только начинаю учить питон поэтому просьба не кидать в меня помидорами , и возник следующий вопрос

вот мой быдлокод для проверки надежности пароля :

def check_valid_passw(passw):
alfavit = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"
ints = "0123456789"
for tmp in alfavit :
if tmp not in passw :
symbols = False
accept_message1 = "пасс не содержит букв"
else :
symbols = True

for tmp2 in ints:
if tmp2 not in passw :
integers = False
accept_message2 = "пасс не содержит цифры"
else :
integers = True

if len(passw) > 16 :
length = True
else :
length = False
accept_message3 = "короткий пасс"

print symbols , integers , length # для дебага

if symbols & integers & length :
return True
else :
return False
passwrrr = "A111111111dddddddddddddddddd9"
a = check_valid_passw(passwrrr)
print a
так вот собственно вопрос как завершать цикл сразу после того как нужное значение стало истинным
если конкретнее то
 
for tmp in alfavit :
if tmp not in passw :
symbols = False
accept_message1 = "пасс не содержит букв"
else :
symbols = True
когда symbols станет истиной то надо прикончить цикл , пробовал играться с break но безрезультатно , так-же возникала мысль заюзать while вместо for но ничего путного в голову так и не пришло


и второй вопрос :
подскажите плз либу для работы с tcp протоколом (т.е. дающую возможность полностью вручную создавать tcp пакеты и отправлять их туда куда мне нужно)



Офлайн

#2 Янв. 13, 2012 06:29:24

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

нужна помошь по нескольким вопросам

>>> 
def x():
for i in range(1000):
return i


>>> x()
0



Отредактировано (Янв. 13, 2012 06:31:30)

Офлайн

#3 Янв. 13, 2012 06:45:53

@cckyi_boxxx
От:
Зарегистрирован: 2012-01-13
Сообщения: 181
Репутация: +  14  -
Профиль   Отправить e-mail  

нужна помошь по нескольким вопросам

чет я тебя не пойму , как твой код может мне помочь , темболее нерабочий код , да будет тебе известно return-ом можно вернуть только одну переменную а не кучу если надо кучу забивай в массив и его выводи ретурном

мой вопрос еще актуален



Офлайн

#4 Янв. 13, 2012 07:19:59

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

нужна помошь по нескольким вопросам

Как то у тебя все слишком сложно. Так нельзя что-ли?

# -*- coding:utf-8 -*-
import string
def pass_validator(pwd):
message=''
if not [x for x in pwd if x in string.digits]:
message+=u" Нету цыфар."
if not [x for x in pwd if x in string.letters ]:
message+=u" Нету букаф."
if len(pwd)<16:
message+=u" Короткий."
return message

mess=lambda x: x if x else u" Пароль хороший, годный"
p1="12345"
p2="wefwJUHG"
p3="12phd"
p4="234ajvabrveauaHIUGHILUGLIUGUIGLIUGLIUGIUGHLUG"
print mess(pass_validator(p1))
print mess(pass_validator(p2))
print mess(pass_validator(p3))
print mess(pass_validator(p4))
 
Нету букаф. Короткий.
Нету цыфар. Короткий.
Короткий.
Пароль хороший, годный



Офлайн

#5 Янв. 13, 2012 07:22:50

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

нужна помошь по нескольким вопросам

@cckyi_boxxx
да будет тебе известно return-ом можно вернуть только одну переменную а не кучу
не болтай ерундой
def u(x):
return 1,2,3,4

print u(9)
(1, 2, 3, 4)
>>>



Офлайн

#6 Янв. 13, 2012 09:56:51

@cckyi_boxxx
От:
Зарегистрирован: 2012-01-13
Сообщения: 181
Репутация: +  14  -
Профиль   Отправить e-mail  

нужна помошь по нескольким вопросам

спс за помощь , самому такой код мне точно было-бы не написать , а по поводу твоего примера удивило но сейчас перечитал ман и понял нельзя несколько ретурнов делать а у тебя в первом случае он срабатывает 1000 раз а во втором 1



Офлайн

#7 Янв. 13, 2012 10:14:00

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

нужна помошь по нескольким вопросам

@cckyi_boxxx
спс за помощь , самому такой код мне точно было-бы не написать , а по поводу твоего примера удивило но сейчас перечитал ман и понял нельзя несколько ретурнов делать а у тебя в первом случае он срабатывает 1000 раз а во втором 1
Да нет же! По ретурну происходит выход из функции и плевать в цикле он или нет. Цикл остановится на той иттерации где был вызван ретурн.
def x():
for i in range(1000):
return i
если бы тут ретурн срабатывал тысячу раз, то на печать вышла бы цифра 999. А вышел 0. Цикл отработал только одну иттерацию и произошел выход из функции.
> нельзя несколько ретурнов делать
Да хоть сто их делай. Но отработает тот до которого вперед дойдет курсор выполнения скрипта.
def x(y):
if y>0: return "Ох ё! Он больше нуля!"
else: return "Блин, ну как всегда!"
return "Так не бывает!"



Отредактировано (Янв. 13, 2012 10:23:36)

Офлайн

#8 Янв. 13, 2012 13:24:30

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

нужна помошь по нескольким вопросам

@cckyi_boxxx
спс за помощь , самому такой код мне точно было-бы не написать , а по поводу твоего примера удивило но сейчас перечитал ман и понял нельзя несколько ретурнов делать а у тебя в первом случае он срабатывает 1000 раз а во втором 1
Лучший способ решить задачу - это подумать.



Офлайн

#9 Янв. 13, 2012 15:22:47

@cckyi_boxxx
От:
Зарегистрирован: 2012-01-13
Сообщения: 181
Репутация: +  14  -
Профиль   Отправить e-mail  

нужна помошь по нескольким вопросам

понял пошел … значит учебник у мну хреновый , буду дальше учить по другому ману , ещещ раз спс за инфу



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version