2015-05-06 6 views
4

Я испытываю очень странную проблему в Python. Эти два, казалось, не помогло:Невозможно сравнить строки ввода в Python 3.2

Validating user input strings in Python и fastest way to compare strings in python

Я написал следующую небольшую программу, test.py:

import sys 
while True: 
    print("\n") 
    print("Type exit to exit: ") 

    inputvar = str(input()) 
    print("Input: "+inputvar) 

    if inputvar == 'exit': 
     print("Exiting!") 
     sys.exit("\n\nProgram quit.") 
    else: 
     print("Still here") 

Текущая версия не кажется, чтобы выйти с exit, 'exit' или "exit". Использование input() вместо str(input()), похоже, не имеет значения, и использование is или in вместо == также не имеет значения.

Я использую Python 3.2 на Windows 7.

+0

Works для меня в Python 3 точно как отправлено. –

+1

'input()' уже возвращает строку, поэтому 'str (input())' не будет иметь никакого значения. 'is' сравнивает * identity *, а не * равенство *, поэтому это плохой выбор для сравнения строк; '==' правильно. Если вы говорите, что '' exit '! =' Exit'' в вашем коде, у вас есть серьезная проблема; вы уверены, что не указали какое-то белое пространство? Попробуйте 'inputvar.strip()' или 'print (repr (inputvar))', чтобы посмотреть, что происходит. – jonrsharpe

+2

Попробуйте добавить 'inputvar.strip()' на всякий случай, если по какой-то причине есть пробелы в пробелах. – ilent2

ответ

7

Существовал ошибка в Python 3.2.0, где задняя \r не был удален из input(): details here. Я предлагаю вам обновить (он был исправлен очень быстро в 3.2.1). Если вы не можете, то:

inputvar = input().rstrip() 
-3

вход() возвращает строку

поэтому нет необходимости использовать Str (вход())

или вы можете использовать

inputvar = input().strip() 
Смежные вопросы