本文介紹了
raw_input和input在python2和python3上的區(qū)別,以及如何利用正則表達(dá)式和input鍵盤輸入一維數(shù)組和二維數(shù)組。更多見:李飛陽(yáng) http://feiyang.li/
raw_input 和 input
python2中
raw_input_A = raw_input("raw_input: ")
type(raw_input_A)
可以看到輸出的是 str
input_A = input("Input: ") #不能輸入字母
type(raw_input_A)
可以看到輸出的是 int,并且我們發(fā)現(xiàn),input根本不能輸入字母,會(huì)直接報(bào)NameError: name 'abc' is not defined,提示沒(méi)有定義。

查看 Built-in Functions ,得知:
input([prompt]) Equivalent to eval(raw_input(prompt))
input() 本質(zhì)上還是使用 raw_input() 來(lái)實(shí)現(xiàn)的,只是調(diào)用完 raw_input() 之后再調(diào)用 eval() 函數(shù),所以,你甚至可以將表達(dá)式作為 input() 的參數(shù),并且它會(huì)計(jì)算表達(dá)式的值并返回它。
不過(guò)在 Built-in Functions 里有一句話是這樣寫的:Consider using the raw_input() function for general input from users.
除非對(duì) input() 有特別需要,否則一般情況下我們都是推薦使用 raw_input() 來(lái)與用戶交互。
python3中
因?yàn)閯偛耪f(shuō)的那個(gè)原因,input其實(shí)沒(méi)有什么必要,所以就被改進(jìn)了。
簡(jiǎn)單來(lái)說(shuō),raw_input沒(méi)有了,只剩下input?,F(xiàn)在這個(gè)input就是之前那個(gè)raw_input。
查看 Python官方文檔input([prompt]) ,得知:
If the prompt argument is present, it is written to standard output without a trailing newline. The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that. When EOF is read, EOFError is raised.
簡(jiǎn)單說(shuō),返回的內(nèi)容都是str,括號(hào)里邊的prompt寫什么,就會(huì)當(dāng)做提示內(nèi)容輸出。比如底下的那個(gè) -->
>>> s = input('--> ')
--> Monty Python's Flying Circus
>>> s
"Monty Python's Flying Circus"
因?yàn)槲乙话愣际怯胮ython3,接下來(lái)的內(nèi)容都是以3為準(zhǔn)。
Python輸入數(shù)組
一維數(shù)組
- 使用
int()進(jìn)行強(qiáng)制類型轉(zhuǎn)型 - 當(dāng)輸入內(nèi)容不為數(shù)字時(shí),不能轉(zhuǎn)型,發(fā)生
except跳出循環(huán)。 - 先聲明
data是一個(gè)list,將input_A一個(gè)個(gè)+進(jìn)去。
data = []
while True:
try:
input_A = int(input("Input: "))
data +=[input_A]
except:
break
data
type(data)

在以上的基礎(chǔ)上,我們可以用python輸入二維數(shù)組
python輸入二維數(shù)組
正則表達(dá)式會(huì)利用非數(shù)字的字符,進(jìn)行切割,因此數(shù)字之間插入什么都無(wú)所謂。
import re
data2D = []
while True:
userInput = input('Input:') # 輸入數(shù)組,用空格隔開即可
info = re.split(r'[\D]',userInput)#正則表達(dá)式分割
data = []# 定義一維數(shù)組
try:
for number in info:
data+=[int(number)] # 一維數(shù)組加入數(shù)字
data2D+=[data] #一維數(shù)組加入到二維中去
except:
break;
data2D