2015-03-12 4 views
1

Проблема, с которой я сталкиваюсь, заключается в том, что когда пользователь вводит классный файл, он будет продолжать утверждать, что это недопустимый ввод. Любая идея, почему это происходит?Python - допустимые входные тесты как недопустимые

classfile = input("Which class would you like to display: ") #Prompts the user to find out which wile to open 
while classfile not in [1, 2, 3]: #Ensures the input it valid 
    print("There are only classes 1, 2 and 3 available.") 
    classfile = input("Which class would you like to display: ") #If input is not valid it will ask them to input it again. 
+1

возможного дубликата (HTTP : //stackoverflow.com/questions/4915361/whats-the-difference-between-raw-input-and-input-in-python3-x) – runDOSrun

+0

@runDOSrun Это очень неясный дубликат. OP нигде не упоминает 'raw_input' и может даже не знать об этом, если они только работали в Python 3. –

+0

@ Two-BitAlchemist Возможно, вы правы, но ссылка содержит все, что необходимо знать OP для решения проблемы, не Это? – runDOSrun

ответ

2

input в Python 3 возвращает строку. Ваш while-statement сравнивает эту строку с целыми числами. Это не будет работать, потому что строки никогда не сравниваются с целыми числами.

Вы можете исправить это, введя свой ввод в целое число или сравнив его со строками. Я предпочитаю последнее, потому что тогда вы не получите исключение из нецелого ввода.

Так изменить Оператор цикла к следующему, и вашему коду будет работать: [? В чем разница между сырым \ _INPUT() и входом() в python3.x]

while classfile not in ['1', '2', '3']: 
Смежные вопросы