Если другое утверждение - как пропустить мимо другого?

Мой код ниже отлично работает, однако, если я выберу "1", код запустит оператор if и напечатает "успех", но он также запустит инструкцию else и выйдет. Как я могу остановить выполнение инструкции else, если пользователь выбирает 1,2 или 3?

Благодарю!

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 ответа

Вы хотите конструкцию elif.

if choice == "1": ...
elif choice == "2": ...
else: # choice != "1" and choice != "2" ...

В противном случае разные операторы if будут отключены друг от друга. Я добавил пустую строку для акцента:

if choice == "1": ...
if choice == "2": ...
else: # choice != 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)

Это делает весь блок выше одной условной конструкции


Вместо длинной цепочки if, elif, иначе вы также можете использовать отображение для этого:

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)

licensed under cc by-sa 3.0 with attribution.