一行 Python 程式碼

abel_cao發表於2016-10-24

Life is short, just use Python.

自從08年接觸Python,就有愛不釋手的感覺,逐漸地,有些不忍地疏遠了Perl 和Shell程式設計,因為python 的優雅麼? 不全是,主要是可以高效開發吧。

那一行程式碼可以幹什麼呢?

有趣

我孩子的英文名叫andy,也許當初教他寫程式的時候,如果先秀一下這行程式碼,可能就更能激起他對程式碼的興趣了。

再python 裡執行它,會輸出一個字元拼出的心形。

LoveAndy

字元圖形還是很有趣的,有一個著名的影象叫mandelbrot。Mandelbrot影象中的每個位置都對應於公式N=x+y*i 中的一個複數,高中學過複數的都還應該有印象。每個位置用引數N來表示,它是x*x+y*y的平方根。如果這個值大於或等於2,則這個數字對應的位置值是0。如果引數N的值小於2,就把N的值改為N*N-
N(N=(x*x-y*y-x)+(2*x*y-y)*i)),並再次測試這個新N值。wiki百科給出的影象是這樣的:
Mandelbrot

讓我們用一行程式碼畫一個Mandelbrot:

這裡寫圖片描述

高效

對於隨手小工具而言,更是Python的拿手好戲。

一行程式碼列印九九乘法表:

輸出:
乘法表

一行程式碼計算出1-1000之間的素數

一行程式碼可以輸出前100項斐波那契數列的值:

一行程式碼實現階乘,而且還帶互動:

一行程式碼實現攝氏度與華氏度之間的轉換器:

至於字串排序和快速排序更是手到擒來。

內涵

看一看下面一行python程式碼,可能就要暈了:

猜數遊戲

這是原來為了激發孩子程式設計興趣,讓孩子練習的程式碼,它的真實面貌是大致這樣的:

實際上,只要理解了函數語言程式設計,使用神奇的Lambda,配合列表推導以及複雜一點的判斷語句,任何的python 程式碼都可以轉換成一行程式碼的。

例如,取一個列表裡的隨機數

轉換成Lambda 可以是:

這些程式碼出了覺得好玩,主要是可以幫助我們瞭解某些Python的雕蟲小記,尤其是神奇的Lambda 用法

延展

當然,還有其他好玩的地方,輸入下面這一行

它開啟了瀏覽器,展示網站上的漫畫和相關內容:
python 開啟瀏覽器

我們可以把python的檔案打包,做成庫的形式,然後import進來,是一種偷換概念和前提的一行程式碼。例如,為了與windows 傳輸檔案,再Mac上臨時搭個ftp:

這當然要依賴pyftpdlib 這個庫了,機器上沒有,pip install pyftpdlib 就可以了。

如果一行程式碼中允許分號存在,那就只是犧牲可讀性而已了,那就基本上無所不能。

在連網的前提下,獲取公網IP地址

一行程式碼就可以輕易寫個小遊戲了,來模擬一下golf擊球。

輸入角度和力量大小如(0.8,80),就能得到一條字元描畫的拋物線了。
增加上while 等語句,畫一個沒完沒了的

maze wall

最後,一行程式碼以python 的哲學結束吧。

參考資料:
http://www.zhihu.com/question/37046157
https://onelinepy.herokuapp.com/
https://github.com/csvoss/onelinerizer

打賞支援我寫出更多好文章,謝謝!

打賞作者

打賞支援我寫出更多好文章,謝謝!

一行 Python 程式碼

相關文章