问题
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?
回答1:
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.
回答2:
if s == 'hello':
print('hi')
elif s == 'exit':
break
else:
print('Undefined input')
This should take care of undefined user input.
来源:https://stackoverflow.com/questions/15840667/input-vs-raw-input-python-interactive-shell-application