Python留下多个if语句

时间:2014-04-27 21:30:27

标签: python

grid = 0

if grid == 0:
    grid == 1
    print("grid 0")

elif grid == 1:
    print("grid 1")
    grid == 2

当第一个if语句为真时,第二个也将变为真。 是否有语句,跳过整个if结构,否则我将不得不拆分if函数,这将使if语句加倍。

3 个答案:

答案 0 :(得分:1)

首先,grid == 1更改grid的值;它只将它与1进行比较,获得一个布尔值,然后立即将其丢弃而不使用它。要更改变量的值,您需要使用赋值运算符 =(而不是相等比较运算符==):例如grid = 1

此外,使用更多if并没有什么不好 - 这是有道理的。事实上,我建议在尝试优化"之前,先让程序尽可能简单明了地运行。它或使它更紧凑。

另外,我会说修改变量的值WHILE你正在使用if-elif-else链测试该变量,被认为是坏样式,因为它会使你的代码更复杂,更难以推理(给自己和他人)。

无论如何,如果第一个if"失败",任何后续的elif都不会被查看,所以基本上你和&#34} #39;在这种情况下,无论如何都被迫使用多个if


作为一个让你受到鼓舞的奖励(甚至可能开始阅读http://learnpythonthehardway.org之类的内容),这里展示了===如何也可以一起使用:

# set `is_wet` to `True` if `precipitation` is "raining", otherwise `False
is_wet = (precipitation == "raining")

答案 1 :(得分:0)

第二个语句将被单独跳过,因为您使用elif而不是第二个if。

答案 2 :(得分:0)

if condition_a:
    statement_a
elif condition_b:
    statement_b:
else:
    default_statement

这些条件中只有一个会激活。在以下情况下:

if i > 1:
    do_stuff
elif i > 1000:
    do_bigger_stuff

如果i==2000,则只执行第一个语句(do_stuff,而不是do_bigger_stuff

请注意,在您的示例中grid == 1不会将grid设置为1,它只会评估False :)