虽然不是__和__ == false之间的区别? (蟒蛇)

时间:2018-01-16 13:55:02

标签: python syntax

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

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

我尝试了while not pair:但是没有用。我希望它在pairFalse时继续,因此当找到一对时,它将返回True

我认为flush的陈述看起来更清晰,我想知道是否有另一种方法可以将这种风格融入我的配对功能中。

2 个答案:

答案 0 :(得分:4)

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

您似乎已为pair分配了一些其他值,这两个值都不是导致行为发生变化的两个值(一个truthy值提前爆发,或者一个falsey值为保持循环比预期更长。)

差异Python style guide建议您始终使用if true_expressionif not false_expression而非使用== True的原因之一或== False

  
      
  • 请勿使用True将布尔值与False==进行比较。

         

    是的:if greeting:
      不:if greeting == True:
      更糟糕的是:if greeting is True:

  •   

最后但并非最不重要的是,对于仅针对单个布尔标记(while ...:while flag:)进行测试的while not pair:循环,请考虑使用while True:和{{1}而是。所以而不是:

break

改为:

flag = True
while flag:
    # ...
    if condition:
        flag = False

答案 1 :(得分:0)

除了实际上几乎没有差别之外,

== 比较中使用 False 允许使用0和1.

0 == False
1 == True

使用是当前值的反转。

not 0 == True
not 1 == False
not False == True

您可以在程序中使用假设只能包含布尔值:

while not pair:

如果您仍然想要使用可以包含布尔值和数字的变量,则可以使用:

while pair is False: