grid = 0
if grid == 0:
grid == 1
print("grid 0")
elif grid == 1:
print("grid 1")
grid == 2
当第一个if语句为真时,第二个也将变为真。 是否有语句,跳过整个if结构,否则我将不得不拆分if函数,这将使if语句加倍。
答案 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
:)