BEEGEEK [ Python 3 ]
Пароль BEEGEEK банка имеет вид a:b:c
, где a, b и c – натуральные числа. Поскольку основатель BEEGEEK фанатеет от математики, то он решил:
- число
a
– должно быть палиндромом; - число
b
– должно быть простым; - число
c
– должно быть четным.
Напишите функцию is_valid_password(password)
, которая принимает в качестве аргумента строковое значение пароля password
и возвращает значение True
если пароль является действительным паролем BEEGEEK банка и False
в противном случае.
Мусор, но понятный:
# объявление функции
def is_valid_password(password):
split_password = password.split(':')
# является ли первое число палиндромом
flag = True
low_text = split_password[0].lower()
list_for_print = []
for i in range(len(low_text)):
if low_text[i].isalnum() is True:
list_for_print.append(low_text[i])
for i in range(len(list_for_print) // 2):
if list_for_print[i] != list_for_print[-1 - i]:
flag = False
break
# является ли второе число простым
count = 0
flag_2 = True
for i in range(2, int(split_password[1]) + 1):
if int(split_password[1]) % i == 0:
count += 1
if count == 1:
flag_2 = True
else:
flag_2 = False
# является ли третье число четным
if int(split_password[2]) % 2 == 0:
flag_3 = True
else:
flag_3 = False
if flag is True and flag_2 is True and flag_3 is True and len(split_password) == 3:
return True
else:
return False
psw = input()
# вызываем функцию
print(is_valid_password(psw))
Короче и красивее:
def is_valid_password(password):
password = password.split(':')
a, b, c = password[0], int(password[1]), int(password[2])
if len(password) != 3 or a != a[::-1] or c % 2 != 0:
return False
for i in range(2, b):
if b % i == 0:
return False
return True
psw = input()
print(is_valid_password(psw))
Было представлено такое решение:
# число a – должно быть палиндромом;
# число b – должно быть простым;
# число c – должно быть четным.
# объявление функции
def is_valid_password(password):
password = password.split(':')
return (password[0] == password[0][::-1]) and (len([i for i in range(1, int(password[1])+1) if int(password[1]) % i == 0]) == 2) and (int(password[2]) % 2 == 0)
# считываем данные
psw = input()
# вызываем функцию
print(is_valid_password(psw))
Входные данные | Выходные данные | |
---|---|---|
1 | 15551:7:290 | True |
2 | 155561:7:290 | False |
3 | 15551:72:290 | False |
4 | 15551:7:291 | False |
5 | 155351:70:290 | False |
6 | 1551151:700:2901 | False |
7 | 11111:71:90000 | True |
8 | 24422442:181:890000 | True |
9 | 1221:101:22:22 | False |
10 | 1221:101:22:221221:101:22:22 | False |