1. 程式人生 > >python3中input輸入淺談

python3中input輸入淺談

        今天談一下關於python中input的一些基本用法(寫給新手入門之用,故只談比較實用的部分)。

       首先,我們可以看一下官方文件給我們的解釋(在python的shell中輸入命令即可):


        上面的英文說的是什麼呢?大家有興趣的可以自己在網上翻譯一下,大致說的就是input這個函式,第一個引數是提示語,它預設是空的。在我們使用input的時候,會從標準輸入中讀取一個string,即字串(請注意,這裡很重要,下面我們會繼續說),對於使用者輸入的換行是不會讀入的,因為我們都知道input是以換行作為輸入結束的標誌的。

        下面就以例子的形式來展示input的“內涵”:

(1)從下圖可以看出,input從標準輸入中為我們拿到的值是一個字串,那麼也就是說,無論我們的初衷是得到一個整數、小數或者其他的值,input都會在我們的輸入的值的左右兩邊加上一個引號(“”),也就是說對於我們拿到的東西,我們使用做後期的加工的。


(2)我們來得到一個整數,很簡單,只需要使用強制型別轉換就可以了:


(3)剛剛在(1)中說到了對於我們的輸入,無論我們的初衷是什麼,都會被加上一對引號,所以你想到了什麼呢?那當然是把引號去掉了,這樣的話我們是不是就會得到原來的東西了呢?請注意,這裡我會通過兩個例子展示(eval請參考另一篇文章點選開啟連結)。


       上面的這個例子中,我們想得到的是一個整數,yes,這個時候你用eval出去input“新增”的引號是完全正確的。其實,當我們輸入的時候,eval幫我們去除了引號後,就相當於執行了a=234,顯然這是整數賦值。而如果沒有加eval,只是單純的a=input("請輸入:"),顯然,我們得到的是a="234"。


        這個例子,我希望展示eval的本質給大家看。這個錯誤說的是,“wer”這個名字沒有被定義,那麼請注意,這個時候的“wer”被編譯器理解成了什麼呢?對於“wer”,編譯器會在自己的系統庫中尋找它,看是否有“wer”的定義,如果沒有找到,那麼不好意思,系統只能將它理解為你在使用一個未定義的變數,也就是說,“wer”被理解成了變數的名字。對於上面的234為什麼不會報這樣的錯誤呢?那是因為系統在自身的庫中可以知道234是一個整數,那麼自然就不會報錯了。下面在給一個例子,進一步加深理解。


         看到這個例子,我想先讓大家回憶一下我們,使用過的賦值語句:a,b=34,3。對於這個語句,大家在類比到上圖中的eval的輸入,在輸入的時候,我輸入的是“34,3”,那麼,在eval會去除input“強加”的引號的時候,是不是等價於“a,b=34,3”這個賦值語句!所以,在這裡我想通過這兩個例子展現一下eval的本質,那就是"單純"的替我們去出引號,大家可以當做eval執行後將引號裡面的內容原原本本地寫回了程式碼的原來位置,那麼這一切是不是就可以看得很明白了。

        請參考上面提到的eval的文章,與此處進行結合,進行互補。