Python: Истинность выражений
Программисту часто приходится в зависимости от значения выражения принимать какие-то решения. Мы уже знаем, что в условных операторах обычно используются предикаты или значения типа bool
. Так вот, в Python значения многих других типов могут быть истинны или ложны «по смыслу», т.е. могут выступать в роли предикатов!
Например, пустая строка, если её использовать в качестве условия, будет означать «ложь», а непустая — «истину»!
Пример:
def test_emptiness(string):
if string:
return 'non-empty'
return 'empty'
print(test_emptiness('foo')) # => 'non-empty'
print(test_emptiness('')) # => 'empty'
Число тоже «ложно», если равно нулю и «истинно», если отлично от нуля.
Пример:
def can_divide_by(number):
if number:
return 'Yes, you can!'
return "No, you can't"
print(can_divide_by(10)) # => 'Yes, you can!'
print(can_divide_by(0)) # => "No, you can't"
Чтобы узнать, «истинно» ли некое значение или «ложно», можно воспользоваться функцией bool()
. Достаточно передать этой функции значение любого типа!
print(bool(0)) # => False
print(bool(10)) # => True
print(bool('')) # => False
print(bool('a')) # => True
Задание
Напишите функцию is_falsy()
, которая проверяет, трактуется ли переданное значение, как ложное с точки зрения Python. Обратите внимание, само название функции должно уже вам говорить, что реализовать предстоит функцию-предикат (мы уже проходили, что это такое). А слово "проверяет" в данном случае означает, что is_falsy()
возвращает "истину", если Python считает значение ложным (и наоборот).
В процессе решения вам может пригодиться упомянутая функция bool()
.