2013-03-25 4 views
-6

В моей функции вводаПроверка, когда вход пользователя передается после проверки, допустимый ввод должен быть подтвержден сообщением печати, а затем запустить другую функцию - однако это не делает, и я не могу фигурировать почему? - Могли бы вы посоветовать, как решить проблему? Большое спасибо!Проверка ввода пользователя python

def main(): 
    print('WELCOME TO THE WULFULGASTER ENCRYPTOR 9000') 
    print('==========================================') 
    print('Choose an option...') 
    print('1. Enter text to Encrypt') 
    print('2. Encrypt text entered') 
    print('3. Display Encrypted Text!') 
    menuChoice() 

def menuChoice(): 
    valid = ['1','2','3'] 
    userChoice = str(input('What Would You Like To Do? ')) 
    if userChoice in valid: 
     inputCheck(userChoice) 
    else: 
     print('Sorry But You Didnt Choose an available option... Try Again') 
     menuChoice() 

def inputCheck(userChoice): 
    if userChoice == 1: 
     print('You Have Chosen to Enter Text to Encrypt!') 
     enterText() 
    if userChoice == 2: 
     print('You Have Chosen to Encypt Entered Text!') 
     encryptText() 
    if userChoice == 3: 
     print('You Have Chosen to Display Encypted Text!') 
     displayText() 

def enterText(): 
    print('Enter Text') 

def encryptText(): 
    print('Encrypt Text') 

def displayText(): 
    print('Display Text') 


main() 
+1

Я не понимаю ваш вопрос. – wRAR

+0

Позвольте мне изменить вопрос извините – user2166941

ответ

3

Вы преобразовать ввод пользователя в строку (str(input('What ...'))), но сравнить его с целыми числами в inputCheck. Поскольку путь else отсутствует в inputCheck, ничего не происходит, когда вы вводите «действительный» вариант.

Кроме того, если вы используете Python 2, использование input - это не то, что вы хотите, raw_input - это путь (см., Например, What's the difference between raw_input() and input() in python3.x?).

Кроме того, рекурсивно вызывая menuChoice, когда пользователь вводит незаконный выбор, вполне вероятно, будет плохая идея: введите незаконный выбор в несколько сот тысяч раз, и ваша программа выйдет из строя (кроме отходов много памяти). Вы должны поместить код в цикл:

while True: 
    userChoice = str(raw_input('What Would You Like To Do? ')) 
    if userChoice in valid: 
     inputCheck(userChoice) 
     break 
    else: 
     print('Sorry But You Didnt Choose an available option... Try Again') 
+0

Спасибо! Я бы дал ответ на ответ, но у меня недостаточно сил для этого! – user2166941

+0

Вы всегда можете принять ответ;) – rainer

Смежные вопросы