【问题标题】:Using IFF in Python在 Python 中使用 IFF
【发布时间】:2015-12-08 14:01:07
【问题描述】:

有没有办法在 Python 中编写 iff 语句(即当且仅当)?

我想像 in 一样使用它

for i in range(x)
    iff x%2==0 and x%i==0:

但是,Python 中没有任何 iff 语句。维基百科将truth table for iff 定义为:

a |  b  |  iff a and b
-----------------------
T |  T  |      T
T |  F  |      F
F |  T  |      F
F |  F  |      T

如何在 Python 中实现这一点?

【问题讨论】:

  • TIL IFF的技术定义与XNOR相同

标签: python python-2.7


【解决方案1】:

如果您查看truth table for IFF,您可以看到当 p 和 q 都为真或两者都为假时 (p iff q) 为真。这与检查相等性是一样的,所以在 Python 代码中你会说:

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

【讨论】:

    【解决方案2】:

    前面的答案解决了问题。

    作为澄清说明:if 语句只接受 一个 输入,而不是多个。所以当你做if blah and bleh:时,就相当于if (blah and bleh):。表达式blah and bleh 首先被评估为真值,然后将该结果提供给if 语句。

    真值表类型的逻辑评估需要多个输入(ab)而不是一个,但 if 不能这样工作。

    【讨论】:

      【解决方案3】:

      根据Wikipedia

      注意,它与 XNOR 门产生的结果等价,与 XOR 门产生的结果相反。

      如果这就是你要找的东西,你只需要这个:

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

      【讨论】:

        【解决方案4】:

        使用biconditional 语句等价:

        【讨论】:

          【解决方案5】:

          我只是想知道。这是一个有效的快速修复:

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

          【讨论】:

          • 那是 iif 不是 iff
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-26
          相关资源
          最近更新 更多