學習完如何寫'hello world'之後,我們還是不太滿意,因為這樣代碼就寫死了,以後運行的時候都只列印一局固定的話而已。 但是,我想在程式運行後,自己手動輸入內容怎麼辦,此時就要學習如何使用用戶交互了。 在python2.x中,用戶交互使用的是 raw_input("提示內容") 方法,例如 之 ...
學習完如何寫'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()的用戶交互的功能還是有的,只是不能去調用變數了而已。
以上,就是用戶交互的基本內容了,還有什麼東西遺漏的話,我會繼續補充。