2015-02-10 108 views
1

我想將一個項目從複合/嵌套if/elif/else語句中傳出。複合如果elif else語句+ python

if x == 0: 
    do something 
elif x == 1: 
    do something else 
elif x == 2: 
    if x == 2 and x == whatever: 
     do something 
    elif x == 2 and x == whatever: 
     do something 
    else: 
     pass it back out 
elif x = 3: 
    do something 
else: 
    do something 

我怎麼能把它傳回內部,如果這樣它會檢查它是否等於3?

通過聲明工作嗎?繼續不斷地拋出一個錯誤。

+0

'pass'聲明只是一個佔位符,它什麼也不做。 – Christian 2015-02-10 22:35:17

+5

'x'如何能同時等於2和3?如果您希望每次檢查您的情況,請將其從「elif」更改爲「if」 – Selcuk 2015-02-10 22:35:24

+1

「通過它返回」是什麼意思?如果你輸入了一個if/else分支,你不能輸入任何其他分支 – 2015-02-10 22:36:09

回答

3
if x == 0: 
    do something 
elif x == 1: 
    do something else 
elif x == 2 and y == whatever: 
     do something 
elif x == 2 and y == whatever: 
     do something 

elif x = 3: 
    do something 
else: 
    do something 

也許?你不能進入一個新的,如果你已經進入了一個

另一個選項/ elif的分支是休息移動內部

if x == 0: 
    do something 
elif x == 1: 
    do something else 
elif x >= 2: 
    if x == 2 and x == whatever: 
     do something 
    elif x == 2 and x == whatever: 
     do something 
    elif x = 3: 
     do something 
    else: 
     do something 

的另一種選擇是跟隨其他例子,如果塊雖然開始新你需要小心一點,不要檢查其他分支之一可能會發生變化的情況......並且每個選項必須與其他選項相互排斥

+0

如果只有'break'和'continue'在循環外部工作 – 2015-02-10 22:37:58

+0

那甚至會做什麼? – 2015-02-10 22:40:57

+0

繼續下一個子句,就好像前面的子句不匹配一樣...... lol – 2015-02-10 22:45:23

0

你真的不需要elif陳述,重新檢查每個中的值爲x。將它們全部更改爲if語句,並將最終的else語句更改爲if x > 3:

+0

雖然,您不需要更改elif語句的_all_,只是最後一個。 – 2015-02-10 22:38:57

+0

在@ JonathanEpstein的解決方案上看到我的評論 – 2015-02-10 22:39:09

+0

@JoranBeasley,看到了你的「假設」評論。有很多「如果可以在這裏編碼,很難知道如何回答這個問題」。我的回答只是解決OP問題的一種方法。 – 2015-02-10 22:45:13

0

要將它們傳遞出去,而不是elif,請使用if語句。

else: 
    pass it back out 
if x == 3 
+0

如果其中一個分支變化x怎麼辦? ...(我沒有downvote,但只是要考慮的東西) – 2015-02-10 22:38:49

+0

@Jonathan Epstein謝謝。我沒有意識到我必須在此之後開始一個新的If塊。這很好。 – konrad 2015-02-10 22:41:12

+0

@JoranBeasley - 一個改變x值的分支並不是海報所指出的。雖然他確實想這樣做,但他希望這個函數儘可能反映x的新價值,而不是原來的價值。 – 2015-02-10 22:57:34