我试图区分 while 循环的不同编写方式。
我是专门为区分不同手型的扑克游戏写这篇文章的。在编写我的is_pair函数时,我首先说pair = False. 我发现继续循环的唯一方法是如果我说while pair == False: .... 对于我的is_flush函数,我可以设置flush = True并while运行循环while flush,继续循环直到flush不再为真。
我试过了,while not pair:但没有奏效。我希望它继续,同时pair是False如此,当它已经发现了一双它将返回作为True。
我认为 for 的语句flush看起来更简洁,我想知道是否有另一种方法可以将该样式合并到我的 pair 函数中。
由于您的while not pair:循环不起作用,您发现了一个重要的区别:pair == False仅当pair设置为0or False(测试为等于 的仅有两个值False)时才测试真,而while not pair测试任何真值(反转该值)。
您似乎分配了一些其他值pair,这两个值都不是导致行为改变的值(真值提前中断,或假值使循环比预期的时间长)。
正是这种差异是Python 风格指南建议您始终使用if true_expressionorif not false_expression而不是使用== Trueor的原因之一== False:
不要将布尔值与
True或False使用==.是:
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)
| 归档时间: |
|
| 查看次数: |
5861 次 |
| 最近记录: |