Несколько пользовательских входов Python - просмотрите все входы перед выходом

Я пытаюсь настроить простое меню пользовательского ввода (без графического интерфейса) следующим образом:

Если пользователь вводит 0:

  1. загружается файл.
  2. появляется меню с вариантами 1-5, предлагающими другой пользовательский ввод от 1 до 5. Теперь, здесь, после первого пользовательского ввода, выполняется некоторая обработка. Затем я хотел бы попросить пользователя ввести второй пользовательский ввод. Это должно продолжаться до тех пор, пока пользователь не введет 6 или больше.

В противном случае (если пользователь не вводит 0) Вывести «Ошибка выхода. Пожалуйста, перезапустите программу».

Вот что у меня есть:

import csv

# Load input file:
choiceloading = input('Please enter 0 to load the input file: ')
if choiceloading == 0:
    with open('eggs.csv', 'rb') as csvfile:
    spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
    for row in spamreader:
        print ', '.join(row)

print ("   M A I N - M E N U")
print ("1. Action 1")
print ("2. Action 2")
print ("3. Action 3")
print ("4. Action 4")
print ("5. Action 5")

# Get user input:
choice = raw_input('Enter choice [1-5] : ')

# Convert input (number) to int type:
choice = int(choice)

# Perform action based on menu-option selection by user:
if choice == 1:
    print ("Action 1...")
    #processing #1 is done here
elif choice == 2:
    print ("Action 2...")
    #processing #2 is done here
elif choice == 3:
    print ("Action 3...")
    #processing #3 is done here
elif choice == 4:
    print ("Action 4...")
    #processing #4 is done here
elif choice == 5:
    print ("Action 5...")
    #processing #5 is done here
else:
    print ("Invalid entry. You should choose 1-5 only. Program exiting.....please restart it and try again.")
else:
    print ("Invalid entry. You should choose 0 to load the file. Program exiting.....please restart it and try again.")

В настоящее время программа принимает только 1 пользовательский ввод. После обработки он выходит. бывший. если пользователь вводит 3 и обработка 3 завершена, программа завершает работу.

Однако я хотел бы разрешить пользователю вводить 1,2,4,5 для обработки 1,2,4,5. Затем они должны ввести> 5, чтобы выйти.

Вопрос: Как после обработки изменить этот код, чтобы позволить пользователю вводить оставшиеся выходы?


person edesz    schedule 24.10.2014    source источник


Ответы (1)


Самый простой способ — добавить обработку в цикл, например:

while True:
    # Get user input:
    choice = raw_input('Enter choice [1-5] : ')

    # Convert input (number) to int type:
    choice = int(choice)

    if choice == 1:
        print ("Action 1...")
        #processing #1 is done here
    elif choice == 2:
        print ("Action 2...")
        #processing #2 is done here
    elif choice == 3:
        print ("Action 3...")
        #processing #3 is done here
    elif choice == 4:
        print ("Action 4...")
        #processing #4 is done here
    elif choice == 5:
        print ("Action 5...")
        #processing #5 is done here
    else:
        print ("Invalid entry. You should choose 1-5 only. Program exiting.....please restart it and try again.")
        # Add sys.exit() (will have to add 'import sys' to top
    else:
        print ("Invalid entry. You should choose 0 to load the file. Program exiting.....please restart it and try again.")
        # Add sys.exit()
person CasualDemon    schedule 24.10.2014
comment
Спасибо. Я вижу, что последнее больше не требуется. Кажется, это не работает. Я могу просмотреть все варианты, но как полностью выйти из программы? Это последнее еще было там, если пользователь не ввел 0 для загрузки файла (как они должны), но он не работает правильно. Есть ли способ выйти, если загрузка выбора не равна 0? - person edesz; 25.10.2014
comment
Вам нужно добавить sys.exit() там, где вы хотите завершить программу, а затем в верхней части файла добавить import sys. Вы можете сделать это и по-другому, поместив весь этот цикл в функцию, поместив оператор return там, где вы хотите выйти, а затем вызовите функцию в своей программе. - person CasualDemon; 26.10.2014
comment
Сделанный. Большое спасибо. Это сработало. Здесь есть ответы на все вопросы. - person edesz; 28.10.2014