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

来源:互联网 发布:传智播客35期java 编辑:程序博客网 时间:2024/05/04 14:01

用C++写完POJ3750之后,想来没事,就用Python改写一下,之后问题,就出来了。

import sysdef 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_nameif __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):heacewalkerTraceback (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 theraw_input() function for general input from users.

所以相对用raw_input()处理用户输入更好一些,只是需要在数值处理上,给予类型的转换便可。






0 0
原创粉丝点击