下面我的代码效果很好,但是,如果我选择“1”,代码将运行if语句并打印“success”,但它也将运行else语句并退出。如果用户选择1,2或3?
,如何停止运行else语句谢谢!
print "\nWelcome to the tool suite.\nWhich tool would you like to use?\n"
print "SPIES - press 1"
print "SPADE - press 2"
print "SPKF - press 3"
print "For information on tools - press i\n"
choice = raw_input("")
if choice == "1":
execfile("lot.py")
print ("success")
if choice == "2":
#execfile("spade.py")
print ("success")
if choice == "3":
#execfile("spkf.py")
print ("success")
if choice == "i":
print "Google Maps is awesome.\n"
print "SPADE\n"
print "SPKF\n\n"
else:
print "Error, exiting to terminal"
exit(1)
答案 0 :(得分:9)
您需要elif
构造。
if choice == "1":
...
elif choice == "2":
...
else: # choice != "1" and choice != "2"
...
否则,不同的if
语句会相互断开连接。我为重点添加了一个空白行:
if choice == "1":
...
if choice == "2":
...
else: # choice != 2
...
答案 1 :(得分:2)
您正在寻找elif
if choice == "1":
execfile("lot.py")
print ("success")
elif choice == "2":
#execfile("spade.py")
print ("success")
elif choice == "3":
#execfile("spkf.py")
print ("success")
elif choice == "i":
print "Google Maps is awesome.\n"
print "SPADE\n"
print "SPKF\n\n"
else:
print "Error, exiting to terminal"
exit(1)
这使得整个块在单个条件构造上方
答案 2 :(得分:0)
您可以使用映射来执行此操作,而不是if,elif,else的长链。
def one():
print "success one"
def two():
print "success two"
def three():
print "success three"
def inf():
print "Google Maps is awesome."
print "SPADE"
print "SPKF\n"
choices={
'1':one,
'2':two,
'3':three,
'i':inf
}
try:
choices[raw_input("Enter choice: ").lower()]()
except KeyError:
print "Error, exiting to terminal"
exit(1)