2015-02-10 129 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