細(xì)究Python鍵盤輸入

本文介紹了raw_inputinputpython2python3上的區(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)有定義。

Python2報(bào)錯(cuò)
Python2報(bào)錯(cuò)

查看 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)
輸入數(shù)組
輸入數(shù)組

在以上的基礎(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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容