2015-07-11 4 views
0

Я печатаю меню python, и мне было интересно, есть ли способ вернуть программу в определенное место. Например:Перейти к строке в python?

print 'choose: ' 
a = raw_input (' apple[a], grape[g], quit[q] ') 
if a=='a': 
    print 'apple' 
elif a=='g': 
    print 'grape' 
elif a=='q': 
    print 'quit' 
    print 'Are you sure?' 
    print 'yes[y], no[n]' 
    b=raw_input ('Choose: ') 
    if b=='y': 
     quit() 
    elif b=='n': 
     print 'returning to menu' 

В той части, где она:

`b=raw_input ('Choose: ') 
    if b=='y': 
     quit() 
    elif b=='n': 
     print 'returning to menu'` 

Как бы я вернуться в первое меню яблоко \ виноградом? Есть ли способ сделать это, чтобы пользователь не должен был уходить и вместо этого возвращался в главное меню?

+0

Используйте 'во время цикла true', который перебирает вашу программу, когда пользователь вводит' n' –

+0

возможно дубликат [Есть ли этикетка/goto в Python?] (http://stackoverflow.com/questions/438844/is-there-a-label-goto-in-python) – NightShadeQueen

+0

Может захотеть прочитать о генераторах и 'yield' – boardrider

ответ

2

я бы либо использовать функцию рекурсивно или время цикла. Поскольку существует уже в то время как решения цикла, рекурсивное решение будет:

from sys import exit 

def menu(): 
    a = raw_input("choose: apple[a], grape[g], quit[q] ") 
    if a == 'a': 
     return 'apple' 
    elif a == 'g': 
     return 'grape' 
    elif a == 'q': 
     print 'Are you sure you want to quit?' 
     b = raw_input ('Choose: yes[y], no[n] ') 
     if b == 'y': 
      exit() 
     elif b == 'n': 
      return menu() # This calls the function again, so we're asked question "a" again 

menu() 
1

Вот версия вашей программы, которая включает ввод/вывод в цикле while. Я также использую словарь для обработки опций (a и g). Он также выполняет некоторую проверку ошибок. Когда это возможно, используйте словари для обработки опций; они намного чище, чем множество операторов if/else.

fruit = {'a': 'apple', 'g': 'grape'} 
while True: 
    option = raw_input("a, g, q: ") 
    if len(option) != 1: 
     break 
    else: 
     if option in fruit: 
      print fruit[option] 
     elif option == 'q': 
      quit = raw_input("Quit? ") 
      if len(quit)!=1 or quit=='y': 
       break 
2

Один из способов сделать это (добавляя свой код):

while True: 
    print 'choose: ' 
    a = raw_input (' apple[a], grape[g], quit[q] ') 
    if a=='a': 
     print 'apple' 
    elif a=='g': 
     print 'grape' 
    elif a=='q': 
     print 'quit' 
     print 'Are you sure?' 
     print 'yes[y], no[n]' 
     b=raw_input ('Choose: ') 
     if b=='y': 
      quit() 
     elif b=='n': 
      print 'returning to menu' 
      continue 
Смежные вопросы