Как выбрать число выполненного условия

Допустим у меня есть код if a or b: и мне нужно сделать так, чтобы если выполнялось первое условие (а), то с = 0, а если второе условие (b), то с = 1, как можно это реализовать?


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

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

Невозможно определить, если правдивым было a или b (или оба a и b), зная только то, что a or b правдиво.

Нужно дальше тестировать, например на правдивость a:

if a or b:
    c = 0 if a else 1

или с тем же самым результатом, но не так компактно

if a or b:
    if a:
        c = 0
    else:
        c = 1

Или возможно целиком пропустить тест на a or b:

if a:
    c = 0
if b:
    c = 1
→ Ссылка
Автор решения: txello

Есть множество вариантов записать это.

# Первый вариант
if a:
    c = 0
elif b:
    c = 1

# Второй вариант
if a or b:
    c = 0 if a else 1

# Третий вариант
if a or b:
    if a:
        c = 0
    else:
        c = 1

# Четвертый вариант (Внутри функции)
if a or b:
    if a:
        return a
    return b

# Пятый вариант (Синтаксис: True if условие else False )
c = (0 if a else 1) if a or b else 0


# Шестой вариант (Синтаксис: (False,True)[условие] )
c = (0,1)[(a,b)[a or b]]

Последние варианты как самые быстрые и стабильные, но написаны под разные ответы при одинаковых условиях

# Пятый вариант
0 - True и False
1 - False и True
0 - False и False
0 - True и True

# Шестой вариант
0 - True и False
1 - False и True
0 - False и False
1 - True и True
→ Ссылка