Python2中使用input()函数触发NameError报错的技术咨询
问题原因分析
哦,这完全是Python2和Python3里input()函数的行为差异搞的鬼!在Python2中,input()函数会把你输入的内容当作Python代码去执行,而不是简单地当作字符串接收。
你输入的seafood, dairy, nuts, chocolatecake会被Python解析成一个由几个变量名组成的元组,但这些变量(seafood、dairy之类的)根本没有被定义过,所以直接触发了NameError——Python找不到这些“变量”的定义。
解决办法
有两个可行的方案,推荐第一个:
- 替换成
raw_input()(首选):Python2里的raw_input()才是真正接收纯字符串输入的函数,它不会尝试执行输入内容,这和Python3里的input()行为一致。修改后的代码如下:
input_test = raw_input("enter somethings eaten in the last 24 hrs:") print(input_test)
运行这个版本,不管你输入什么内容,都会被直接当作字符串保存和打印,不会再报错。
- 临时应急方案(不推荐):如果非要用
input(),那输入内容的时候记得把整个文本用引号括起来,比如输入"seafood, dairy, nuts, chocolatecake"。这样Python会把它识别成字符串字面量,而不是变量组合,但这种方式很麻烦,不如直接换raw_input()省心。
内容的提问来源于stack exchange,提问作者McKenzie Bell
相关产品推荐
相关产品推荐

