而不是表达和布尔理解

时间:2016-11-24 15:20:52

标签: python boolean

我发现这是为了生成随机数。

def main():
    randomNumber = randint(1,100)
    found = False
    while not found:
        userGuess = input("")
        if userGuess == randomNumber:
          print "You win."
          found = True
        elif
          .....
        else
          .....

所以我的问题是'虽然没有找到',但我发现这不是本能的。 更本能但不工作应该是这样的:

found = False
while found

- >找到错误时循环正在工作

有人可以解释一下吗?

2 个答案:

答案 0 :(得分:1)

当给定表达式为while时,将执行True循环。在您的情况下,给定的表达式为not found。由于foundFalse开头,not found当然是True,因此循环执行并将继续执行,直到found设置为{{1} }},此时True将是not found

我的建议是不要重写它 - 它实际上是非常易读的。你说你有 找到的东西,继续寻找。

答案 1 :(得分:1)

如果while not found似乎不直观,你可能应该习惯它。它是一种常见的Python习语,经过一段时间后会显得非常直观(双关语)。

如果你想要更可读的代码,我会完全摆脱found变量并使用break来终止循环:

def main():
    randomNumber = randint(1,100)
    while True:
        userGuess = input("")
        if userGuess == randomNumber:
            print "You win."
            break
        # Code here will run only if the break isn't executed.
        # You don't need the elif any more.

这是个人偏好的问题:有些人喜欢使用flag变量来终止循环;我更喜欢像这样的代码中的显式中断的简单性。