Python множество потребителски входове - преминете през всички входове, преди да излезете

Опитвам се да настроя просто меню за въвеждане от потребителя (не-gui), както следва:

Ако потребителят въведе 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, за да зареди файла (както трябва), но не работи правилно. Има ли начин за излизане, ако optionloading не е равно на 0? - person edesz; 25.10.2014
comment
Трябва да добавите sys.exit() там, където искате да завършите програмата и след това в горната част на файла да добавите import sys. Можете да го направите и по друг начин, като поставите целия цикъл във функция, поставите оператор return там, където искате да излезете, след което извикате функцията във вашата програма. - person CasualDemon; 26.10.2014
comment
Свършен. Благодаря много. Това проработи. На всички въпроси тук се отговаря. - person edesz; 28.10.2014