if else声明 - 如何跳过其他?

时间:2013-07-03 23:44:07

标签: python if-statement

下面我的代码效果很好,但是,如果我选择“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)

3 个答案:

答案 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)