一般软件做的事情主要就是下面几条:
· 接受人的输入。
· 改变输入。
· 打印出改变了的输入
———来自<笨办法学Python>
相同点¶
这两个函数均用来接收输入,上述真理已足以说明它们的重要性,我不赘述了。
不同点¶
1. raw_input() 直接读取控制台的输入(任何类型的输入它都可以接收)。而对于 input() ,它希望能够读取一个合法的 python 表达式,即你输入字符串的时候必须使用引号将它括起来,否则它会引发一个 SyntaxError 。
>>>a=raw_input("请输入字符串,不用写引号:")
请输入字符串,不用写引号:guoshu
>>>b=input("请输入字符串,不写引号试试:")
请输入字符串,不写引号试试:guoshu
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
input_A = input("Input: ")
File "<string>", line 1, in <module>
NameError: name 'guoshu' is not defined
>>>c=input("请输入字符串,必须写引号:")
请输入字符串,必须写引号:guoshu
2. raw_input() 将所有输入作为字符串看待,返回字符串类型。而input() 可接受合法的 python 表达式,包括数字,字符串(有引号才算合法的字符串表达式),其他(如1+2)。
>>>d1=raw_input("raw_input输入数字时:"
raw_input输入数字时:123
>>>type(d1)
<type 'str'>
>>>d2=input("input输入数字时:")
input输入数字时:123
>>>type(d2)
<type 'int'>
>>>e1=raw_input("raw_input输入表达式时:"
raw_input输入表达式时:3+2
>>>type(e1)
<type 'str'>
>>>e1
'3+2'
>>>e2=input("input输入表达式时:"
input输入表达式时:3+2
>>>type(e2)
<type 'int'>
>>>e2
5
看看文档时怎么说滴:¶
input([prompt])
* Equivalent to eval(raw_input(prompt)).
* This function does not catch user errors. If the input is not syntactically valid, a SyntaxError will be raised. Other exceptions may be raised if there is an error during evaluation.
* If the readline module was loaded, then input() will use it to provide elaborate line editing and history features.
* Consider using the raw_input() function for general input from users.
第一点¶
input() 本质上还是使用 raw_input() 来实现的,只是调用完 raw_input() 之后再调用 eval() 函数。
第四点¶
除非对 input() 有特别需要,否则一般情况下我们都是推荐使用 raw_input() 来与用户交互。