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

Мой код ниже отлично работает, однако, если я выберу "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.