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表达式
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()处理用户输入更好一些,只是需要在数值处理上,给予类型的转换便可。
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 学习(一) 中文,字符串,以及input和raw_input区别
- python raw_input() 和 input() 的区别
- Python raw_input和input总结 在版本2和版本3中的区别
- python中raw_input()以及input()函数的区别
- [基础] - Python中 raw_input 和 input 的区别
- python中input()与raw_input()的区别到底是啥?-----marsggbo原创作品为你解答
- 【python2.7】raw_input()和input()区别及用法
- Python input和raw_input的区别
- python 预设命令行变量代替raw_input 二次输入的方法
- Python中raw_input() 与 input() 的区别
- python中input和raw_input的区别
- 【Python】Python input和raw_input的区别
- python 中 input 和 raw_input 的区别
- Python中input和raw_input的区别
- Python学习笔记 -- input()和raw_input()使用区别
- python input 和raw_input 区别
- 【python2.7】raw_input()和input()区别及用法
- Python的raw_input() 与 input()区别
- python input 与raw_input函数的区别
- python input 与raw_input函数的区别