использование IFF в python

есть ли способ написать заявление iff(i.e если и только если) в python. Я хочу использовать его как в

for i in range(x)
    iff x%2==0 and x%i==0:
нет iff оператор в Python. Википедия определяет таблица правды для iff а это:
 a |  b  |  iff a and b
-----------------------
 T |  T  |      T
 T |  F  |      F
 F |  T  |      F
 F |  F  |      T

как это сделать в Python?

5 ответов


по данным Википедия:

обратите внимание, что это равносильно, что произведенные XNOR гейт, и напротив, вырабатывается схема исключающее ИЛИ.

Если это то, что вы ищете, вы просто хотите этого:

if not(x%2 == 0 ^ x%i == 0):

Если вы посмотрите на таблица правды для IFF, вы можете видеть, что (P iff q) истинно, когда оба p и q истинны или оба ложны. Это то же самое, что проверка равенства, поэтому в коде Python вы скажете:

if (x%2==0) == (x%i==0):

предыдущие ответы решают проблему.

в качестве пояснения к этому:if оператор принимает только один вход, а не несколько. Поэтому, когда вы делаете if blah and bleh:, Это эквивалентно if (blah and bleh):. Выражение blah and bleh сначала оценивается значение истины, и этот результат затем подается в if заявление.

тип таблицы истинности логической оценки потребует нескольких входов (a и b) вместо одного, но if не работает такой образ.


использовать двойное условие заявление эквивалентности:

enter image description here


просто интересно же. Вот быстрое исправление, которое сработало

def iff(a,b,c):
    if a:
        return b
    else:
        return c