Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 12, 2015 21:57:55

alex28746
Зарегистрирован: 2015-01-18
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка пароля

Добрый вечер. Подскажите пожалуйста вот с такой задачей. Написать функцию которая проверяет или пароль подходит под требования безопасности или нет. В конце должна возвращать: True если удовлетворяет и False соответственно если нет. Пароль удовлетворяет требование безопасности в том случае если длина его не меньше чем 6 символов, так же должна присутствовать минимум одна заглавная буква, и одна малая буква.

def prowerka(data):
    a = len(data)
    if a > 10 and data.isdigit and data.islower and data.isupper:            
        return True
    else:
        return False

Подскажите что не так, почему условия data.islower и data.isupper не проверяются? Заранее спасибо за помощь.

Офлайн

#2 Апрель 12, 2015 22:14:06

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

Проверка пароля

In [1]: data = 'python'
In [2]: data.isdigit
Out[2]: <function isdigit>
In [3]: data.isdigit()
Out[3]: False



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Офлайн

#3 Апрель 12, 2015 22:16:15

alex28746
Зарегистрирован: 2015-01-18
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка пароля

def prowerka(data):
    a = len(data)
    if a > 10:
        for i in data:
            if i.isupper() and i.islower() == True:                
                return "a"
            
        else:
            return False
теперь False постоянно выдает

Офлайн

#4 Апрель 12, 2015 22:23:00

ajib6ept
От: От: От: От: От: От: От: От:
Зарегистрирован: 2013-08-04
Сообщения: 297
Репутация: +  26  -
Профиль   Отправить e-mail  

Проверка пароля

isupper() и islower() (для обного символа) взаимоисключающие понятия, регистр не может быть и верхний и нижний, он либо верхний, либо нижний, поэтому пятая строчку не бывает True



_________________________
Python golden rule: Do not PEP 8 unto others; only PEP 8 thy self.
Don't let PEP 8 make you insanely intolerant of other people's code.

Отредактировано ajib6ept (Апрель 12, 2015 22:24:40)

Офлайн

#5 Апрель 12, 2015 22:24:26

alex28746
Зарегистрирован: 2015-01-18
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка пароля

тогда как проверить эти два условия?

Офлайн

#6 Апрель 12, 2015 22:32:02

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Проверка пароля

def f(s, op):
    return any(op(i) for i in s)
def prowerka(passwd):
    return len(passwd) > 5 and f(passwd, str.islower) and f(passwd, str.upper)



————————————————
-*- Simple is better than complex -*-

Офлайн

#7 Апрель 12, 2015 22:53:55

alex28746
Зарегистрирован: 2015-01-18
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка пароля

[code python]password = ('a1213aafksfsads')[/code]
А почему при таком значении пароля выдает True?

Офлайн

#8 Апрель 12, 2015 22:59:53

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Проверка пароля

alex28746
А почему при таком значении пароля выдает True?
потому что я случайно написал не isupper а upper :)
    return len(passwd) > 5 and f(passwd, str.islower) and f(passwd, str.isupper)



————————————————
-*- Simple is better than complex -*-

Офлайн

#9 Апрель 12, 2015 23:02:49

alex28746
Зарегистрирован: 2015-01-18
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Проверка пароля

а не мог бы пояснить пожалуйста что делает первая функция? )

Офлайн

#10 Апрель 12, 2015 23:13:21

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Проверка пароля

alex28746
а не мог бы пояснить пожалуйста что делает первая функция? )
any



————————————————
-*- Simple is better than complex -*-

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version