while not __ 和 while __ == false 之间的区别?(Python)

B. *_*Lop 1 python syntax

我试图区分 while 循环的不同编写方式。

我是专门为区分不同手型的扑克游戏写这篇文章的。在编写我的is_pair函数时,我首先说pair = False. 我发现继续循环的唯一方法是如果我说while pair == False: .... 对于我的is_flush函数,我可以设置flush = Truewhile运行循环while flush,继续循环直到flush不再为真。

我试过了,while not pair:但没有奏效。我希望它继续,同时pairFalse如此,当它已经发现了一双它将返回作为True

我认为 for 的语句flush看起来更简洁,我想知道是否有另一种方法可以将该样式合并到我的 pair 函数中。

Mar*_*ers 5

由于您的while not pair:循环不起作用,您发现了一个重要的区别:pair == False仅当pair设置为0or False(测试为等于 的仅有两个值False)时才测试真,而while not pair测试任何真值(反转该值)。

您似乎分配了一些其他pair,这两个值都不是导致行为改变的值(真值提前中断,或假值使循环比预期的时间长)。

正是这种差异Python 风格指南建议您始终使用if true_expressionorif not false_expression而不是使用== Trueor的原因之一== False

  • 不要将布尔值与TrueFalse使用==.

    是: if greeting:
    否: if greeting == True:
    更糟:if greeting is True:

最后但并非最不重要的一点是,对于while ...:仅针对单个布尔标志 ( while flag:or while not pair:)进行测试的循环,请考虑使用while True:andbreak代替。所以,而不是这样做:

flag = True
while flag:
    # ...
    if condition:
        flag = False
Run Code Online (Sandbox Code Playgroud)

这样做:

while True:
    # ...
    if condition:
        break
Run Code Online (Sandbox Code Playgroud)