if <условие 1>:
<выражение 1>
elif <условие 2>:
<выражение 2>
…
elif <условие n>:
<выражение n>
else:
<выражение n + 1>
Николай написал функцию is_alive(health), которая проверяет здоровье персонажа в игре.
Если оно равно или меньше нуля, то функция возвращает False, в противном случае True.
К сожалению, функция не работает, так как ученик допустил в ней ряд ошибок.
Исправьте их и проверьте работоспособность программы (в качестве аргумента всегда передается число).
def is_alive(health):
if:
health < 0
False
else:
return true
def is_alive(health):
if health <= 0:
return False
else:
return True
# Тесты
print(is_alive(122))
print(is_alive(0))
print(is_alive(-1))
True
False
False
Составьте функцию season_events(number_of_month), которая принимает номер месяца вашего рождения и в зависимости от сезона печатает на выходе следующее:
«Вы родились в <НАЗВАНИЕ_МЕСЯЦА>. <ОПИСАНИЕ_СОБЫТИЙ>».
В качестве ОПИСАНИЯ_СОБЫТИЙ будет характеристика сезона:
- для зимы «За окном падал белый снег»,
- для весны «Птицы пели прекрасные песни»,
- для лета «Солнце светило ярче чем когда-либо»,
- для осени «Урожай был невероятным».
Важно учесть, что пользователи могут ввести любой тип данных в качестве аргумента (не попадитесь на этом и предупредите о том, что «Требуется ввести реальный номер месяца»).
months = {
1: 'Январе',
2: 'Феврале',
3: 'Марте',
4: 'Апреле',
5: 'Мае',
6: 'Июне',
7: 'Июле',
8: 'Августе',
9: 'Сентябре',
10: 'Октябре',
11: 'Ноябре',
12: 'Декабре'
}
def season_events(number_of_month):
if not isinstance(number_of_month, int) and 1 <= number_of_month <= 12:
print('Требуется ввести реальный номер месяца')
return
if number_of_month in range(3, 6):
print(f'Вы родились в {months[number_of_month]}. Птицы пели прекрасные песни')
elif number_of_month in range(6, 9):
print(f'Вы родились в {months[number_of_month]}. Солнце светило ярче чем когда-либо')
elif number_of_month in range(9, 12):
print(f'Вы родились в {months[number_of_month]}. Урожай был невероятным')
else:
print(f'Вы родились в {months[number_of_month]}. За окном падал белый снег')
# Тесты
season_events(33)
season_events('wq')
season_events(1)
season_events(7)
season_events(10)
season_events(5)
Требуется ввести реальный номер месяца
Требуется ввести реальный номер месяца
Вы родились в Январе. За окном падал белый снег
Вы родились в Июле. Солнце светило ярче чем когда-либо
Вы родились в Октябре. Урожай был невероятным
Вы родились в Мае. Птицы пели прекрасные песни
Анатолию в последний месяц удача улыбалась очень плохо.
У него 3 раза взломали пароль.
Вот он и задумался над тем, что неправильно подходит к вопросу составления паролей.
Чтобы не напрягаться больше и опять не попасть впросак, молодой человек решил написать функцию на Python, которая будет проверять его пароль на надежность.
Требования к паролю у Анатолия следующие (он внимательно изучил рекомендации знатоков):
1) Длина – 8 символов (если меньше – то проще взломать, а если длиннее – то сложно запомнить)
2) В пароле должны быть заглавные буквы, строчные символы, числа и специальные знаки (из перечня «*-#»; другие спецсимволы недопустимы, так как Анатолий их не может запомнить).
Помогите парню составить функцию check_pass (pswd), которая проверит пароль на соответствие требованиям.
В случае верного пароля выведется на печать «Пароль идеален», а в остальных случаях будут перечислены все ошибки, которые Анатолий допустил (для представления перечня ошибок заведите переменную err в виде словаря).
import string
def check_pass(pwd):
err = {
'length': 'Длина пароля не равна 8 символам',
'upper': 'Отсутствуют заглавные буквы',
'lower': 'Нет строчных букв в пароле',
'digits': 'Нет цифр в пароле',
'spec': 'Отсутствуют спецсимволы в пароле',
'bad_symbols': 'В пароле использованы непредусмотренные символы'
}
if len(pwd) == 8:
err.pop('length')
if pwd.lower() != pwd:
err.pop('upper')
if pwd.upper() != pwd:
err.pop('lower')
if any(map(str.isdigit, pwd)):
err.pop('digits')
if ('*' in pwd) or ('-' in pwd) or ('#' in pwd):
err.pop('spec')
allowed_sym = string.ascii_uppercase + string.ascii_lowercase + string.digits + '*-#'
if (set(pwd) - set(allowed_sym)) == set():
err.pop('bad_symbols')
if len(err) == 0:
print('Пароль идеален')
else:
print(*err.values(), sep='; ')
# Тесты
check_pass('8Yy#*rrT')
check_pass('@#@@u')
check_pass('Tr56#2@@')
check_pass('qwerty11')
check_pass('11qweQ-s')
import string
def check_pass(pswd):
err = {
'length': 'Длина пароля не равна 8 символам',
'upper': 'Отсутствуют заглавные буквы',
'lower': 'Нет строчных букв в пароле',
'digits': 'Нет цифр в пароле',
'spec': 'Отсутствуют спецсимволы в пароле',
'bad_symbols': 'В пароле использованы непредусмотренные символы'
}
if len(pswd) == 8:
err.pop('length')
pswd_reduced = [symbol for symbol in pswd]
for symbol in pswd:
if symbol in string.ascii_uppercase:
pswd_reduced.remove(symbol)
err.pop('upper', None)
elif symbol in string.ascii_lowercase:
pswd_reduced.remove(symbol)
err.pop('lower', None)
elif symbol in string.digits:
pswd_reduced.remove(symbol)
err.pop('digits', None)
elif symbol in '*-#':
pswd_reduced.remove(symbol)
err.pop('spec', None)
if len(pswd_reduced) == 0:
err.pop('bad_symbols')
if len(err) == 0:
print('Пароль идеален')
else:
print(*err.values(), sep='; ')
# Тесты
check_pass('8Yy#*rrT')
check_pass('@#@@u')
check_pass('Tr56#2@@')
check_pass('qwerty11')
check_pass('11qweQ-s')
Пароль идеален
Длина пароля не равна 8 символам; Отсутствуют заглавные буквы; Нет цифр в пароле; В пароле использованы непредусмотренные символы
В пароле использованы непредусмотренные символы
Отсутствуют заглавные буквы; Отсутствуют спецсимволы в пароле
Пароль идеален
Число делится на 6 только в случае соблюдения двух условий: последняя его цифра четная, а сумма всех цифр делится на 3.
Напишите функцию is_divisible_by_6(number), которая возвращает «Число Х делится на 6» или «Число Х неделимо на 6» в зависимости от того, можно ли его разделить на 6.
В качестве аргумента может быть передано любое целое число.
def is_divisible_by_6(number):
lst_str_digits = list(str(abs(number)))
lst_digits = list(map(int, lst_str_digits))
sum_digits = sum(lst_digits)
if (sum_digits % 3 == 0) and (lst_digits[-1] % 2 == 0):
return f'Число {number} делится на 6'
else:
return f'Число {number} неделимо на 6'
from functools import reduce
def is_divisible_by_6(number):
num = abs(number)
if int(str(num)[-1]) % 2 == 0 and reduce(lambda x, y: int(x) + int(y), str(num), 0) % 3 == 0:
return f'Число {number} делится на 6'
return f'Число {number} неделимо на 6'
# Тесты
print(is_divisible_by_6(6))
print(is_divisible_by_6(-96))
print(is_divisible_by_6(-1234))
print(is_divisible_by_6(40008))
Число 6 делится на 6
Число -96 делится на 6
Число -1234 неделимо на 6
Число 40008 делится на 6