通过例子来了解 input() 和 raw_input() 的区别及用法,在脚本中输入下面的代码:
name = input(“What’s your name?”)
print “Hello, ” + name + “!”
输出后显示如下:
What’s your name?Chai
Traceback (most recent call last):
File “ex.py”, line 1, in <module>
name = input(“What’s your name?”)
File “<string>”, line 1, in <module>
NameError: name ‘Chai’ is not defined
虽然看上去是完全合法的程序,结果却无法输出。问题在于 input() 会假设用户输入的是合法的 Python 表达式(或多或少有些与repr函数相反的意思)。试着以带引号的字符串形式 “Chai” 重新输入,显示输出成功。
What’s your name?”Chai”
Hello ,Chai!
对于 input() ,它希望能够读取一个合法的 Python 表达式,即你输入字符串的时候必须使用引号将它括起来,否则它会引发一个 SyntaxError 。
因此,要求用户必须带着引号输入他们的内容显得有些过分,这时就需要使用 raw_input() 函数,它会把所有的输入当作原始数据(raw data),然后将其放进字符串中。接下来使用一个 raw_input() 的例子:
print “How much do you weigh?”,
weight = raw_input()
print “So,you are”, weight, “heavy.”>>
How much do you weigh? 80kg
So,you are 80kg heavy.
最终的输出内容非常顺利。所以,除非对 input() 确实有特殊需要,否则一般情况下都会推荐使用 raw_input() 来与用户进行交互操作。