2013-12-13 3 views
0

Я хочу сделать программу, которая начнется с выбора режима. И тогда он должен оставаться в этом режиме, пока я не дам ему команду вернуться к выбору режима. Например:Возврат к началу кода

input=raw_input('Select mode, insert number of wanted mode: \n 1. first mode \n 2. second mode \n 3. Third mode\n') 

if input=='1': 
    while True: 
     #code 

if input=='2': 
    while True: 
     #code 

if input=='3': 
    while True: 
     #code 

Какой лучший и самый короткий способ вернуть его к выбору режима с помощью определенной команды?

Благодаря

+3

Подсказка: Вы должны воздерживаться от именования переменных так же, как один из встроенных модулей. Это затмевает их, тем самым делая их непригодными для использования в текущей области. – iCodez

ответ

3

Используйте break, чтобы выйти из (внутреннего) контура while True:

while True: 
    input=raw_input('Select mode, insert number of wanted mode: \n 1. first mode \n 2. second mode \n 3. Third mode\n') 

    if input=='1' 
     while True: 
      #code 
      if something_happens: 
       break 

    elif input=='2': 
     while True: 
      #code 

    elif input=='3': 
     while True: 
      #code 

Для получения дополнительной информации о break см официальной документации here.

1

Как насчет того, чтобы выбрать режим в своей функции, вы можете просто вызвать эту функцию, когда захотите?

def get_mode(): 
    input=raw_input('Select mode, insert number of wanted mode: \n 1. first mode \n 2. second mode \n 3. Third mode\n') 
    return input 
0

Вы должны, как указано в комментарии избегать использования встроенных имен переменных, таких как input.

A Право Способ сделать это будет с помощью словаря для выбора функции и исключения для обработки неожиданного ввода. Все вложенные в цикл while в основном.

Я написал небольшой пример, основанный в значительной степени на это: python - Simulating 'else' in dictionary switch statements

import sys 

def mode1(arg = None): 
    return 'Mode1 completed' 

def mode2(arg = None): 
    return 'Mode2 completed' 

def mode3(arg = None): 
    return 'Mode3 completed' 

def modeQuit (arg = None): 
    sys.exit(0) 

def main(): 
    menuText = "Select mode, insert number of wanted mode: \n 1. first mode \n 2. second mode \n 3. Third mode\n" 

    # Function dictionary 
    mode_function = { 
     '1' : mode1, 
     '2' : mode2, 
     '3' : mode3, 
     'q' : modeQuit 
     } 

    data=None 

    print mode_function 

    while True: 
    mode_selection = raw_input(menuText).strip() 
    try: 
     print mode_function[mode_selection](data) 
    except KeyError: 
     print 'Not a valid mode' 

    return 0 

if __name__ == '__main__': 
    main(); 
Смежные вопросы