所以我正在完成一项任务,在尝试此操作之前,我无法让代码工作:
而不是输入:
if (num != 0 and den != 0):
至:
if not(num == 0 and den == 0)
我也试过这个:
if not ((num and den ) == 0):
我不明白这些陈述之间的区别是什么。第二个声明让它做我想做的事,但我不知道为什么。谢谢!
编辑:抱歉模糊,这里的第一个计时器。 所以我想做的是: 人们可以证明:
(iii)如果num!= 0且den!= 0,则两条线不平行,因此在一条线上相交 点。
如果线段相交,则返回True。
我从我正在为我班级使用的教科书中得到了这个。基本上有一个具有分子和分母的等式,这些是为它们做出的陈述。如果这仍然太模糊,请告诉我。另外,我正在使用python 3.谢谢!!!
答案 0 :(得分:1)
我猜你想要的是一个简单的OR语句
if num or den:
与您选择的陈述的真实性相符。
>>> def test(num, den):
... print(bool(num or den), 'num or den')
... print(bool(not(num == 0 and den == 0)), 'not(num == 0 and den == 0)')
... print(bool(num != 0 and den != 0), '(num != 0 and den != 0)')
... print(bool(not ((num and den ) == 0)), 'not ((num and den ) == 0)')
...
>>>
>>> test(0, 0)
False num or den
False not(num == 0 and den == 0)
False (num != 0 and den != 0)
False not ((num and den ) == 0)
>>>
>>> test(0, 1)
True num or den
True not(num == 0 and den == 0)
False (num != 0 and den != 0)
False not ((num and den ) == 0)
>>>
>>> test(1, 0)
True num or den
True not(num == 0 and den == 0)
False (num != 0 and den != 0)
False not ((num and den ) == 0)
>>>
>>> test(1, 1)
True num or den
True not(num == 0 and den == 0)
True (num != 0 and den != 0)
True not ((num and den ) == 0)
>>>
答案 1 :(得分:1)
您的代码的作用:
num
和den
中至少有一个不等于0时,它会运行,但另一个可能仍为0。num
和den
的真值(见下文)。然后将其逻辑AND与0进行比较,然后进行反转。换句话说,当num
和den
都有一个truthy值时会运行,这应该导致与第一段代码相同的行为。由于这取决于truthy / falsy值而不是显式比较,我不建议这样做 - 它可能会对某些数据类型产生一些意想不到的结果。关于truthy / falsy值:
[]
,{}
或""
,则为虚假,否则为真。None
总是假的。在我的机器上进行测试时,True
和num
在den
和False
都为非零时为True
,否则为num
。 (2)当den
,False
或两者都不为零时为!=
,否则为and
。
根据尼尔森在评论中所说的,据我所知,可以测试if (num != 0) and (den != 0):
优先于__init__
,因此不会导致问题。
以上所有内容都在Python 2.7上进行了检查。我不能保证Python 3的工作方式是一样的。
如果您想获得更多帮助,可能需要提供一些有关您的输入和预期输出的更多信息。
虽然你的第一个也是最后一个方法应该适用于python 2.7,因为你报告的第一个方法不是,它可能确实与操作优先级有关。您应该可以使用
解决此问题 __init__
当且仅当两者都非零时才应执行。