Определить результат работы кода

На степике есть задача: https://stepik.org/lesson/23899/step/1?adaptive=true&unit=6425

Не могу понять, почему именно такой ответ:

true
false
false
true
t or f
false
true
f or t

Можно в онлайн режиме увидеть последовательность выполнения? Или ознакомиться на какой ветке, почему именно такие значения печатаются?


Ответы (1 шт):

Автор решения: BlueScreen

def t():
    print('true')
    return True

def f():
    print('false')
    return False

if t() and f():
    print('t and f')

if f() and t():
    print('f and t')

if t() or f():
    print('t or f')

if f() or t():
    print('f or t')

Вот код.

if t() and f():
    print('t and f')

Вот на этом шаге выводится true false. Но так как f = false, то внутренность if не выполняеьтся. Аналогично:

if f() and t():
    print('f and t')

Но здесь выведется только False. Т.к компилятор не будет проверять второе условие and если первое ложно

А вот в этих блоках

if t() or f():
    print('t or f')

if f() or t():
    print('f or t')

выполняется и функции и "внутренности", это выводит:

true
t or f - в 1-ом блоке
 
false
true
f or t - во втором

По той - же причине. Зачем проверять второе условие or, если первое истина

→ Ссылка