Напишите функцию dislike_6(a), которая всегда возвращает True, если только не передается число 6 типа int или типа float (в данном случае она вернет «Только не 6!»).
def dislike_6(a):
if (type(a) is float or type(a) is int) and a == 6.0:
return 'Только не 6!'
return True
# Тесты
print(dislike_6(6.0))
print(dislike_6(6))
print(dislike_6('6'))
print(dislike_6('Хорошо'))
print(dislike_6([6, 6]))
Только не 6!
Только не 6!
True
True
True
Изучающий язык Python студент постоянно путается в свойствах логических операций (ассоциативность, дистрибутивность, коммутативность, правило де Моргана).
Он решил написать функцию-подсказку help_bool(letter), которая принимает одну из 4 букв: к, а, д, м (соответствующую каждому свойству).
Результат выполнения: определенное правило работы в виде строки.
Если будет передано что-то иное, то вернется подсказка-строка с пояснением по каждому возможному аргументу.
def help_bool(letter=None):
if letter == 'к':
return 'A or B = B or A\nA and B = B and A'
elif letter == 'а':
return 'A or (B or C) == (A or B) or C == A or B or C\n' \
'A and (B and C) == (A and B) and C == A and B and C'
elif letter == 'д':
return 'A and (B or C) == (A and B) or (A and C) \nA or (B and C) == (A or B) and (A or C)'
elif letter == 'м':
return 'not(A or B) == not A and not B \nnot(A and B) == not A or not B\n'\
'not(A < B) == A >= B\nnot(not(A)) = A'
else:
return 'Возможные аргументы: к – Коммутативность, д – Дистрибутивность, а – Ассоциативность, ' \
'м – Теорема Де Моргана'
# Тесты
print(help_bool())
print(help_bool([2, 6]))
print(help_bool('к'))
Возможные аргументы: к – Коммутативность, д – Дистрибутивность, а – Ассоциативность, м – Теорема Де Моргана
Возможные аргументы: к – Коммутативность, д – Дистрибутивность, а – Ассоциативность, м – Теорема Де Моргана
A or B = B or A
A and B = B and A
Дано 2 скрипта. В первом – возникает ошибка, во втором – ошибки нет.
Поясните почему.
Скрипт 1.
a = None
if len(a) > 0 and a is not None:
print('OK')
Скрипт 2.
a = None
if a is not None and len(a) > 0:
print('OK')
a = None
if a is not None and len(a) > 0:
print('OK')
a = 'Нет ошибок'
if a is not None and len(a) > 0:
print('OK')
– первое выражение будет проигнорировано
– второе выражение напечатает 'OK'.
a = None
if len(a) > 0 and a is not None:
print('OK')
TypeError (ошибка типа).
После изучения темы «Логический тип в Python» перед учеником стала задача написать функцию divider(a, b), принимающую любые 2 числовых параметра.
Задача функции: разделить a на b.
Если в знаменателе введут ноль, то результат будет следующим: «Нули в знаменателе не приветствуются».
В противном случае выводится итог деления чисел, возведенный в куб.
Решите задание без использования условия if, применяя свойства логических операторов.
def divider(a, b):
if b == 0:
return 'Нули в знаменателе не приветствуются'
return (a / b) ** 3
def divider(a, b):
return b and (a / b) ** 3 or 'Нули в знаменателе не приветствуются'
# Тесты
print(divider(10, 4))
print(divider(10, 0))
print(divider(-12.2, 2))
print(divider(-6.4, 0))
15.625
Нули в знаменателе не приветствуются
-226.98099999999997
Нули в знаменателе не приветствуются