學習完如何寫'hello world'之后,我們還是不太滿意,因為這樣代碼就寫死了,以后運行的時候都只打印一局固定的話而已。
但是,我想在程序運行后,自己手動輸入內容怎么辦,此時就要學習如何使用用戶交互了。
在python2.x中,用戶交互使用的是 raw_input("提示內容") 方法,例如
name = raw_input("請輸入姓名:") print name
之前的起手式就略去了,代碼的執行結果是:
再輸入東西后回車
這里有一個要注意的地方,那就是當程序運行到等待用戶輸入的地方時,會一直等着,也就是下面的代碼不會繼續執行了,連退出都要用ctrl+c強制退出。
另外,這里輸入的數據會將其轉換成字符串類型,要注意有時函數傳參中的類型錯誤,別問我是怎么知道的。
在第一篇中曾經提過,在3.x中, raw_input() 已經被 input() 取代了,而input()的特性又有所不同:
name = input("請輸入姓名:") print type(name) print name
其中,type()函數是用來查看數據類型的,這種可以直接用的,被稱為內置函數或內建方法。
當我們和上面輸入的一樣時,卻發現報錯了,關於報錯提示怎么看以后會進行總結,這里報錯的意思是變量沒有被定義。
如果我換一種輸入方式的話:
當我用引號引起來的時候,發現又可以了。這里可以得出input()的特性為:在輸入字符串的時候一定要帶引號,數字可以不用。這個和raw_input()很不同,要注意一下。
當然最后返回的依然是字符串類型。
看到第一次輸入后而報錯的時候,有些人會問,如何我這里輸入的是已經定義(也就是已經賦值)的變量名, 是不是就能夠調用到在內存中的值了?
在2.7(因為我只用過2.7,其他2.x不清楚)中,確實是可以這樣的,但是在3.x中不行,因為這個功能被另一個內置函數 eval("name") 代替了("name"是傳入字符串,然后用傳入的字符串作為變量名)。
當然input()的用戶交互的功能還是有的,只是不能去調用變量了而已。
但是,python2.7中也有一個 input() 函數,但這個 input() 函數又和 3.x 中的不一樣,看代碼示例:
num = input('---') print type(num)
可以看到在python2.7中,輸入什么類型的就是什么類型的。而和3.x中無論輸入什么類型都是字符串的不同。
最后總結:
2.7中: input() 輸入上面類型,得到的數據就是什么類型;而且不帶引號的時候還能找到相應的變量
3.x中: 無論 input() 輸入的是什么,最終得到的都是字符串;而尋找變量的功能被 eval() 函數所替代。
以上,就是用戶交互的基本內容了,還有什么東西遺漏的話,我會繼續補充。