本文介紹了
raw_input
和input
在python2
和python3
上的區(qū)別,以及如何利用正則表達式和input
鍵盤輸入一維數(shù)組和二維數(shù)組禁舷。更多見:李飛陽 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根本不能輸入字母牵咙,會直接報NameError: name 'abc' is not defined
派近,提示沒有定義。
![Python2報錯](http://cdn.mmmxcc.cn/blog/20170310/125930252.png)
查看 Built-in Functions 洁桌,得知:
input([prompt]) Equivalent to eval(raw_input(prompt))
input() 本質(zhì)上還是使用 raw_input() 來實現(xiàn)的渴丸,只是調(diào)用完 raw_input() 之后再調(diào)用 eval() 函數(shù),所以另凌,你甚至可以將表達式作為 input() 的參數(shù)谱轨,并且它會計算表達式的值并返回它。
不過在 Built-in Functions 里有一句話是這樣寫的:Consider using the raw_input() function for general input from users.
除非對 input() 有特別需要吠谢,否則一般情況下我們都是推薦使用 raw_input() 來與用戶交互献汗。
python3中
因為剛才說的那個原因罢吃,input其實沒有什么必要刃麸,所以就被改進了司浪。
簡單來說,raw_input
沒有了吁伺,只剩下input
。現(xiàn)在這個input就是之前那個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.
簡單說茬腿,返回的內(nèi)容都是str切平,括號里邊的prompt
寫什么悴品,就會當做提示內(nèi)容輸出。比如底下的那個 -->
>>> s = input('--> ')
--> Monty Python's Flying Circus
>>> s
"Monty Python's Flying Circus"
因為我一般都是用python3邦蜜,接下來的內(nèi)容都是以3為準亥至。
Python輸入數(shù)組
一維數(shù)組
- 使用
int()
進行強制類型轉(zhuǎn)型 - 當輸入內(nèi)容不為數(shù)字時絮供,不能轉(zhuǎn)型壤靶,發(fā)生
except
跳出循環(huán)贮乳。 - 先聲明
data
是一個list亚茬,將input_A
一個個+
進去浓恳。
data = []
while True:
try:
input_A = int(input("Input: "))
data +=[input_A]
except:
break
data
type(data)
![輸入數(shù)組](http://cdn.mmmxcc.cn/blog/20170310/132018132.png)
在以上的基礎(chǔ)上颈将,我們可以用python輸入二維數(shù)組
python輸入二維數(shù)組
正則表達式會利用非數(shù)字的字符厨疙,進行切割沾凄,因此數(shù)字之間插入什么都無所謂知允。
import re
data2D = []
while True:
userInput = input('Input:') # 輸入數(shù)組保屯,用空格隔開即可
info = re.split(r'[\D]',userInput)#正則表達式分割
data = []# 定義一維數(shù)組
try:
for number in info:
data+=[int(number)] # 一維數(shù)組加入數(shù)字
data2D+=[data] #一維數(shù)組加入到二維中去
except:
break;
data2D
![](http://cdn.mmmxcc.cn/blog/20170310/135120083.png)