grid = 0
if grid == 0:
grid == 1
print("grid 0")
elif grid == 1:
print("grid 1")
grid == 2
當首先if語句爲true時,第二個語句也會變爲true。 是否有聲明,跳過整個if結構,否則我將不得不拆分if函數,這將使if語句加倍。Python會留下多個if語句
grid = 0
if grid == 0:
grid == 1
print("grid 0")
elif grid == 1:
print("grid 1")
grid == 2
當首先if語句爲true時,第二個語句也會變爲true。 是否有聲明,跳過整個if結構,否則我將不得不拆分if函數,這將使if語句加倍。Python會留下多個if語句
第二條語句將被忽略,因爲如果使用了elif而不是第二條語句。
首先,grid == 1
將不是更改值grid
;它只是將它與1
進行比較,獲得一個布爾值,然後立即拋棄它,而不使用它。要更改變量的值,需要使用賦值運算符=
(與等號比較運算符==
相反):例如grid = 1
。
此外,使用更多if
-s它沒有什麼不好。事實上,我建議在嘗試「優化」它或使其更緊湊之前,首先儘可能以簡單和直接的邏輯工作。
另外,我想說修改一個變量的值,而您正在使用鏈條if-elif-else
測試該變量的過程時,被認爲是不好的樣式,因爲它會讓您的代碼更加複雜且難以推理(對於自己和其他人)。
在任何情況下,如果第一個if
「失敗」,任何後續elif
旨意甚至不看,所以基本上你不得不在這種情況下,無論如何使用多個if
秒。
作爲獎勵,讓你靈感(甚至開始閱讀像http://learnpythonthehardway.org),這裏是如何=
和==
的演示也可以一起使用:
# set `is_wet` to `True` if `precipitation` is "raining", otherwise `False
is_wet = (precipitation == "raining")
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
:)
結構*是*跳過;只有一個測試將被挑選。 –
什麼?無論條件是否成立,'elif'只會在'if'不成立的情況下運行。你真的試過這段代碼嗎? –
我很抱歉代碼的質量不好,但這種行爲真的會覆蓋下一條if語句,否則我不會要求它。我試圖複製它與這個簡單的片段,但它不起作用。 – user1767754