【Python練習題 005】輸入三個整數x,y,z,請把這三個數由小到大輸出。
-----------------------------------------------------------------------
這題想想應該比較容易:無非是先獲取3個數字,然后比大小,按順序輸出即可。不過在寫代碼的過程中遇到了個難題:因為擔心輸入時輸入非指定的分隔符,需要指定多個分隔符(英文逗號、中文逗號、空格),但 str.split() 只接受1個分隔符。
上網搜索了下,發現可以用正則表達式解決這個問題,於是就有了 import re 這一行了。代碼如下:
import re x, y, z = re.split(',| |,| ', input('請輸入3個數字,用逗號或空格隔開:')) x, y, z = int(x), int(y), int(z) maxNo = max(x, y, z) minNo = min(x, y, z) print(maxNo, x+y+z-maxNo-minNo, minNo)
早就知道正則表達式很強大,但因為太難了,一直沒敢碰啊…… 日后一定得好好研究下這部分內容!
【2016-10-14 更新】------------------------------------------------------------
坐地鐵,手機里讀了篇文章,看到了 str.sort() 這個方法,覺得可以用來解這題。思路是:用 re.split() 得到 3 個字符型數字的列表,把字符轉換為數字,排下序,然后 print() 不就都解決了嗎?代碼如下:
import re lst = re.split(',| |,| ', input('請輸入3個數字,用逗號或空格隔開:')) for i in range(len(lst)): lst[i] = int(lst[i]) lst.sort() print(lst)
果然簡單很多啊~~~
++++++++++++++++++++++++++++++++++++++