您的位置:首页 > 编程语言 > Python开发

Python中的input方法与raw_input方法区别小记

2013-12-23 18:33 399 查看
用C++写完POJ3750之后,想来没事,就用Python改写一下,之后问题,就出来了。

import sys

def main():
max_num = 64
child_name = []
print 'Please input number'
number = raw_input()

while len(child_name) < number:
child_name.append(raw_input())

print child_name

if __name__ == "__main__":
main()
在运行的时候,感觉出了死循环,逻辑上有没发现什么问题,之后就困惑了,最终发现,问题竟然是出在raw_input()上,印象中好像也之前貌似也有一次类似问题,所以就先总结一下吧,以免今后出现同样的问题。

>>> A = raw_input("A(raw_input):")
A(raw_input):5
>>> type(A)
<type 'str'>
>>> B = input("B(input):")
B(input):5
>>> type(B)
<type 'int'>
>>> B = input("B(input):")
B(input):3.4
>>> type(B)
<type 'float'>
看如上的例子,当用户输入的是数字时,raw_input()是作为字符处理,而input()是处理为数值的类型,如int和float。

那么当输入为字符的时候,raw_input()和input()又会有什么不同呢?

>>> A = raw_input("A(raw_input):")
A(raw_input):heacewalker
>>> type(A)
<type 'str'>
>>> B = input("B(input):")
B(input):heacewalker

Traceback (most recent call last):
  File "<pyshell#16>", line 1, in <module>
    B = input("B(input):")
  File "<string>", line 1, in <module>
NameError: name 'heacewalker' is not defined
当输入为字符时,raw_input()会正常接收用户输入,其类型为string,而input()会出现错误提示,在看下面的例子,input()会接收合法的python表达式
>>> B = input("B(input):")
B(input):"heacewalker"
>>> type(B)
<type 'str'>
通过官方文档
input([prompt])

Equivalent to
eval(raw_input(prompt)).

可以得知,input()相当于raw_input()之后再执行eval()函数的处理结果。

Consider using the
raw_input() function for general input from users.

所以相对用raw_input()处理用户输入更好一些,只是需要在数值处理上,给予类型的转换便可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Python