import re
password = []
def validate_password(password):
input_str = input('Введите пароль: ')
def _validate_symbols(input_str):
return input_str.isalnum()
_validate_symbols(input_str)
if _validate_symbols(input_str) == True:
pass
else:
password.append('содержит запрещенные символы')
def _validate_letters_even(input_str):
count_letter = (len(re.sub('[^a-zA-Z]+', '', input_str)))
if count_letter != 0 and count_letter % 2 == 0:
return True
else:
password.append('не содержит четного кол-ва букв')
return False
_validate_letters_even(input_str)
def _validate_numbers_odd(input_str):
count_digits = sum([ 1 for s in input_str if s.isdigit() ])
if count_digits != 0 and count_digits % 2 == 0:
return True
else:
password.append('не содержит четного количества цифр')
return False
_validate_numbers_odd(input_str)
if len(password) == 0:
return True
else:
print(password)
return password
validate_password(password)
Объяснение:
если есть вопросы пиши, функции сам только начал изучать, чуть голова не лопнула)) В конце validate_password(password) можно воткнуть в print() чтобы увидеть что дейтвительно возращает True
--- Python 3.8.3 ---
import typing
from typing import Callable
from typing import Any
Primitive = typing.TypeVar('Primitive', int, float, complex, str, bytes, bytearray)
def ReadSeqWhile(predicate: Callable[[Any], bool], SeqType: Primitive = int):
'''
Возвращает последовательность элементов в указанном типе, считываемых с клавиатуры, пока ввод удовлетворяет условию
'''
temp = SeqType(input())
while predicate(temp):
yield temp
temp = SeqType(input())
def main():
InputData = ReadSeqWhile(lambda p: p != '', SeqType = str)
for _ in InputData:
print('text')
if __name__ == "__main__":
main()