Нет, я не проклинаю в названии. Мне нужно создать программу обработки паролей, которая проверяет ввод, соответствует ли он определенным критериям, одним из которых является то, что он должен содержать один из символов $ @!% & * _. это то, что у меня есть.
def pword():
global password
global lower
global upper
global integer
password = input("Please enter your password ")
length = len(password)
lower = sum([int(c.islower()) for c in password])
upper = sum([int(c.isupper()) for c in password])
integer = sum([int(c.isdigit()) for c in password])
def length():
global password
if len(password) < 8:
print("Your password is too short, please try again")
elif len(password) > 24:
print("Your password is too long, please try again")
def strength():
global lower
global upper
global integer
if (lower) < 2:
print("Please use a mixed case password with lower case letters")
elif (upper) < 2:
print("Please use a mixed case password with UPPER case letters")
elif (integer) < 2:
print("Please try adding numbers")
else:
print("Strength Assessed - Your password is ok")
Вы можете использовать 're.match (...)' в 're' модуль стандартной библиотеки. Обратите внимание, что некоторые из символов, которые вы сопоставляете, имеют другое значение в контексте регулярного выражения, поэтому обязательно избегайте их - например, в совпадении используйте '' \ * '', чтобы найти литерал' * 'vs . '' * ''означает« 0 или более повторений ». https://docs.python.org/3.5/library/re.html#match-objects –
Кстати, вам не нужно объявлять 'global foo' для переменных внутри функций, если вы их не модифицируете - они уже имеют доступ для чтения к глобальным по [правилам разрешения области видимости] (http://stackoverflow.com/a/292502/149428). Вы можете удалить все свои глобальные декорации внутри 'length()' и 'strength()'. –