input vs. raw_input: Python Interactive Shell Appl

2019-02-23 21:41发布

I was working off of the answer in this question: Python Interactive Shell Type Application

My code looks like this

def main():
  while True:
    s = input('> ')

    if s == 'hello':
      print('hi')

    if s == 'exit':
      break

if __name__ == "__main__":
  main()

If I run it, and type hello, I get

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

How should I be listening for text, and calling different functions based on the result?

2条回答
Lonely孤独者°
2楼-- · 2019-02-23 22:10
if s == 'hello':
  print('hi')

elif s == 'exit':
  break

else:
  print('Undefined input')

This should take care of undefined user input.

查看更多
Evening l夕情丶
3楼-- · 2019-02-23 22:20

You're running it under Python 2.x, where input() actually evaluates what you type as a Python expression. Thus, it's looking for a variable named hello, and, since you haven't defined one, it throws the error. Either use Python 3.x, or use raw_input().

From the parentheses in your print I assume you intended to run it under Python 3.x.

查看更多
登录 后发表回答