python中input输出“Name ‘XXX‘ is not defined问题
python中input输出“Name XXX is not defined问题
1.问题描述
代码如下:
x = input("Your name:") print x
操作时如下:
Your name:liming
得到结果如下:
>>> x = input("Your name:") liming Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<string>", line 1, in <module> NameError: name liming is not defined
2.原因解释
出现上面的问题原因就在于没有好好理解python基本语法中的input()和raw_input()之间的关系:
在<<Beginning Python From Novice to Professional Second Edition>>一书中P21-22讲解如下:
input()会假设用户输入的是合法的Python表达式(其实就是也接收变量名)。如果以字符串作为输入的名字(手动给人家加上x或者"x"),程序运行是没有问题的.
即如我们将运行时操作改为:
-- -- -- -- -- -- -- -- -- -- -- -- -- -- Your name:liming print x liming -- -- -- -- -- -- -- -- -- -- -- -- -- -- Your name:"liming" print x liming -- -- -- -- -- -- -- -- -- -- -- -- -- --
这两者都是合法且可以执行的严格格式.
但是如果使用:
raw_input()函数
它会把所有的输入当做原始数据(raw data),也就是不接受变量,会直接将其转换为字符串赋值
x = raw_input("Your name:") print x
得到的操作和结果如下:
C:Python27python.exe "G:/Python_Space/hello world.py" Your name:liming liming Process finished with exit code 0
3.结果分析
当前这种问题只会出现在Python2.x的环境中,且input()书写的时候完全严格定义是引用还是实体。
在我现在的工作中已经切换到Python3.x, raw_input()已近完全替换了input()的功能,不再接收变量作为入参,也就不再会有上面的问题。
上一篇:
IDEA上Java项目控制台中文乱码