входные данные против raw_input: приложение Interactive Shell Python?

Я отработал ответ в этом вопросе: Приложение типа интерактивной оболочки Python

Мой код выглядит так:

def main(): while True: s = input('> ') if s == 'hello': print('hi') if s == 'exit': break if __name__ == "__main__": main() 

Если я запустил его и набрал привет, я получу

  File "<string>", line 1, in <module> NameError: name 'hello' is not defined 

Как я должен слушать текст и вызывать разные функции на основе результата?

2 Solutions collect form web for “входные данные против raw_input: приложение Interactive Shell Python?”

Вы запускаете его под Python 2.x, где input() фактически оценивает то, что вы вводите в качестве выражения Python. Таким образом, он ищет переменную с именем hello , и, поскольку вы ее не определили, она выдает ошибку. Используйте Python 3.x или используйте raw_input() .

Из круглых скобок в вашем print я предполагаю, что вы намеревались запустить его под Python 3.x.

 if s == 'hello': print('hi') elif s == 'exit': break else: print('Undefined input') 

Это должно позаботиться о неопределенном вводе пользователя.

  • Определение функции отображения в интерактивной оболочке
  • Что случилось с shlex.split?
  • Печать всех команд оболочки, запущенных из сценария python, на консоль перед выполнением
  • Прочитать аргумент с пробелами в скрипте python из сценария оболочки
  • Python Script: печатать новую строку каждый раз для оболочки, а не для обновления существующей строки
  • Запуск скрипта Python, как встроенная команда командной консоли
  • Создание скриптов bash в python
  • присвоение значения переменной оболочки с использованием возвращаемого значения функции из Python
  •  
    Interesting Posts for Van-Lav

    Создание массива numpy настраиваемых объектов дает ошибку «SystemError: возврат ошибки без исключения»,

    установить правильную позицию виджетов Tkinter в Python

    В Python, как разбирать строку, представляющую набор аргументов ключевого слова, так что порядок не имеет значения

    Неопознанные команды в bash захватываются интерпретатором python

    Boost.Python Hello World на Mac OS X

    как использовать аргументы ключевых слов с пулом многопроцессорности python apply_async

    открытие сайтов с использованием urllib2 из-за корпоративного брандмауэра – 11004 getaddrinfo не удалось

    Проверка, является ли ввод плавающим и имеет ровно 2 числа после десятичной точки

    Изменение значка по умолчанию в tkinter OptionMenu?

    Как установить SIP и PyQT на Windows 7

    Как использовать внешний интерфейс GUI с Tkinter?

    Невозможно вычесть значения времени смещения и наименьшего времени

    как сортировать по длине строки, за которой следует алфавитный порядок?

    SMTPHandler в модуле регистрации Python, отправляя электронные письма по одному. Как я могу остановить это?

    Является ли поведение списка Python + = iterable документированным в любом месте?

    Python - лучший язык программирования в мире.