strange while statement behaviour?

后端 未结 2 1239
有刺的猬
有刺的猬 2021-01-26 08:18

I cannot figure out why the following statements dont work.

randomKey = random.choice(list(topic.keys()))
randomValue = random.choice(topic[randomKey])

current          


        
相关标签:
2条回答
  • else, when used with while, runs after the while expression evaluates to a falsy value if the while loop finishes by the expression being false, instead of being broken out of by a break statement (or execution leaving the function via a return or raise-ing an exception). Your while condition in your second example must fail, so there's no opportunity for a break to occur, the function to return or an exception to be thrown, so the else statements will always run.

    docs for while

    0 讨论(0)
  • 2021-01-26 08:50

    It is part of the Python grammar. From the documentation:

    This [a while statement] repeatedly tests the expression and, if it is true, executes the first suite; if the expression is false (which may be the first time it is tested) the suite of the else clause, if present, is executed and the loop terminates.

    So in the first case, it must be that the while condition never evaluates to false, while in the second it eventually does. Note that explicitly breaking out of the loop will not execute the else clause.

    0 讨论(0)
提交回复
热议问题