Консольный ввод неправильно оценивается с помощью скрипта python, встроенного в exe с cx_freeze

У меня есть скрипт, состоящий из 3 файлов и 2 пакетов. Когда я запускаю скрипт в IDLE или через командную строку, он выполняется отлично. Я использовал cx_freeze для преобразования программы в исполняемый файл, и она по-прежнему работает нормально, за исключением того, что текст, полученный с помощью метода input(), оценивается неправильно. Этот код отражает мой собственный:

x = str(input("Continue? (y/n): "))
if x.lower() == "y" or x.lower() == "yes":
    cont = True
else:
    print("thanks for playing.")
    cont = False
input("press enter key to exit...")

Я добавил преобразователь str() в функцию ввода, чтобы посмотреть, поможет ли это, но это не помогло. Независимо от того, набираю ли я «да» или «у», условное выражение все равно оценивается как ложное, и я понятия не имею, почему. Я также добавил операторы печати в каждую ветвь условного оператора, и значение, напечатанное для x, правильное, но все равно оценивается как ложное.


person Sevvy325    schedule 22.05.2012    source источник
comment
Иногда ввод получает символ новой строки в конце. Это работает с x = input("Continue? ").strip()?   -  person Thomas K    schedule 22.05.2012
comment
Это исправило это. Такое простое решение, спасибо за помощь. :D   -  person Sevvy325    schedule 25.05.2012
comment
Пожалуйста. Опубликовано как ответ, так что вы можете принять его ;-)   -  person Thomas K    schedule 25.05.2012


Ответы (1)


Иногда ввод получает символ новой строки в конце. Попробуйте его разобрать:

x = input("Continue? ").strip()
person Thomas K    schedule 25.05.2012