我正在尝试使用字典在Python中实现switch
语句,但我遇到了一个问题。
以下是我的尝试:
print "Enter value of i"
i=eval(raw_input())
j=0
def switch(i):
print "Hello\n"
return {True: 'gauw',
i==1: a(10),
i==2: a(20),
}[True]
def a(t):
global j
j=t
switch(i)
print j
输出:
输入i的值
1
20
但是我期待10输出。所以,这里的主要问题是,它正在执行i==1
&的两个语句。 i==2
。另外,我不能在这里使用break
。
那么如何获得理想的输出?
答案 0 :(得分:2)
def switch(i):
if i==1:
a(10)
elif i==2: #Even if here wil work, instead of elif
a(20)
else:
return 'gauw'()
会做的伎俩
答案 1 :(得分:1)
我认为你的开关应该是:
print "Enter value of i"
i=eval(raw_input())
j=0
def switch(i):
print "Hello\n"
try:
return {
1: a,
2: b,
}[i]()
except:
// default action here
return 'gauw'
def a():
global j
j=10
def b():
global j
j=20
switch(i)
print j
a(10),a(20)都是在构建字典时调用的
编辑添加默认案例,因为有人关心此事。
答案 2 :(得分:0)
我将行动与逻辑分开,如下所示:
action_dict = dict([
(1, lambda: a(10)),
(2, lambda: a(20)),
])
def switch(value, actions):
if value in actions:
return actions[value]()
return 'gauw'
print "Enter value of i"
i=eval(raw_input())
switch(i, action_dict)