входные данные против 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') 

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

  • Чтение содержимого pdf-файла
  • Прочитать аргумент с пробелами в скрипте python из сценария оболочки
  • Обнаружить версию python в сценарии оболочки
  • Python unicode popen или ошибка чтения Popen unicode
  • Как узнать, работает ли скрипт на tty?
  • Как вызвать скрипт оболочки из кода python?
  • Как может работать функция оболочки, если она работает в virtualenv?
  • Запустить скрипт Python без консоли Windows
  • Назначение переменных среды из сценария bash для текущего сеанса из Python
  • удаленное выполнение сценария оболочки с помощью python
  • Идентификация общих элементов в нескольких файлах
  • Python - лучший язык программирования в мире.