python中的raw_input() 與 input()區別

參考文章:http://www.cnblogs.com/way_testlife/archive/2011/03/29/1999283.html
作用:
兩者都python的內建函數,讀取控制檯用戶的輸入數據,但略有區別

>>> raw_input_A = raw_input("raw_input: ")
raw_input: abc
>>> type(raw_input_A)
<type 'str'>
>>> input_A = input("Input: ")
Input: abc
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in <module>
NameError: name 'abc' is not defined
>>>
>>> input_A = input("Input: ")
Input: "abc"
>>> 
>>> raw_input_A = raw_input("raw_input: ")
raw_input: "abc"
>>> print raw_input_A
"abc"
>>> print input_A
abc
>>> type(input_A)
<type 'str'>
>>> type(raw_input_A)
<type 'str'>
>>> 

嘗試輸入數字,看下有什麼區別

>>> raw_input_B = raw_input("raw_input: ")
raw_input: 123
>>> type(raw_input_B)
<type 'str'>
>>> input_B = input("input: ")
input: 123
>>> type(input_B)
<type 'int'>

總結:
1.在輸入字符的情況下,raw_input()會將輸入當作字符串看,返回的也是字符串類型的值,但input()會把輸入當作是一個python表達式,如果想作爲字符串返回,輸入時要把輸入內容用引號括起來,很是不方便,不然就會引發一個SyntaxError
2.在輸入數字的情況下,raw_input()的返回還是str類型,面input()返回則是一個int類型,不光可以是int型,還可以是浮點型等
3.再就是,input()可以接受python表達式,輸入表達式,直接計算出結果,而raw_input()則是直接把表達式當字符串輸出

>>> input_C = input("input: ")
input: 1+3
>>> input_C
4
>>> type(input_C)
<type 'int'>
>>> raw_input_C = raw_input("raw_input:")
raw_input:1+3
>>> raw_input_C
'1+3'
>>> type(raw_input_C)
<type 'str'>

4.平時一般我們用raw_input()來接收用戶的輸入,如果有特別需要的話,再就input(),如果你想接收int型數據,那可以直接用input(),如果你用raw_input()接收int型,下面還用要一行代碼去做轉換,這樣就複雜了

以上測試環境:python 2.6.6,但python3下情況是不一樣的。python3裏已經沒有了raw_input(),只有input()了,也就不存在以上的區別可言了,不管你輸入的是字符還是數字,返回的都是str類型,這樣反而方便了

>>> a = input("input:")
input:abc
>>> type(a)
<class 'str'>
>>> b = input("input:")
input:123
>>> type(b)
<class 'str'>
>>> c = raw_input("raw_input:")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'raw_input' is not defined
>>> 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章