一行Python程式碼能實現什麼喪心病狂的功能?

highhand發表於2021-09-11

一行Python程式碼能實現什麼喪心病狂的功能?

友情提示:部分案例適用於Python3,在Windows下面可以用Python命令代替,具體請根據自己的修行選擇。

一、江湖純情版

1、 愛心

先來個高贊愛心的中英文結合版:

print'n'.join([''.join([(u'ILoveChina愛'[(x-y)%11]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3<=0 else' ')
for x in range(-30,30)])for y in range(15,-15,-1)])

一行Python程式碼能實現什麼喪心病狂的功能?

如果換成純漢字的版本,則可能會出現較明顯的變形,所以為保證妹子不理解成“變心”,建議使用中英文結合的方式。你get到了嗎?

一行Python程式碼能實現什麼喪心病狂的功能?

2、 美麗的螺旋

或許你覺得心型圖案太俗套,那麼試試下面這個美麗的螺旋?在python編譯器中輸入下面的程式碼,接下來讓我們來見證奇蹟吧!

exec """nfrom turtle import *nfor i in range(500): n forward(i)n left(91)n"""

一行Python程式碼能實現什麼喪心病狂的功能?

二、娛樂縱情版

1、猜數字

無聊的時候,猜猜數字也是很有樂趣的嘛。1~99範圍內的整數,如果猜對了會給你一個“Y”,如果猜高了會給出一個“H”;猜低了,你會得到一個“L”(Y、H、L可以根據你希望它給出的提示進行更換),你有六次機會猜出正確的結果哦! 

python3 -c "import random;n=random.randint(1,99);[(lambda a:print('Y' if a==n else 'H' if a>n else 'L'))
(int(input())) for i in range(6)]”

一行Python程式碼能實現什麼喪心病狂的功能?

2、老虎機

猜數字不過癮?不如再來試試迷你老虎機,用隨機的unicode字元打樣出來,完美模擬了老虎機的效果! 

python3 -c "import random;p=lambda:random.choice('7♪♫♣♠♦♥◄☼☽');[print('|'.join([p(),p(),p()]),end='r') 
for i in range(8**5)]”

93ccba2ac1b1e6e9d4d0b260213af87.png

3、 一行程式碼幫你選彩票號碼

當然,還有更刺激的彩票搖號,不過與其將命運交給彩票站的投注機器,不如自己寫一行程式碼,喏,彩票選號程式碼瞭解一下: 

python -c "from random import sample; print 'Lotto numbers: %s' % sample(range(1, 50), 6)"

5501e1da331a6bbeb8c348882a34a93.png

友情提示:彩票有風險,出手須謹慎,至於這行程式碼給出的結果是否能夠中獎,那就只能看你的運氣啦!

三、學府深造版

1、一行程式碼實現GUI使用者介面

python -c "from Tkinter import *;root = Tk();w = Label(root, text='你好!慕課網!');w.pack();root.mainloop()”

80384a0982567f9a1f269ef06342bf0.png

一行程式碼實現GUI使用者介面有木有!

2、一行程式碼啟動一個http伺服器

一行程式碼可以啟動一個HTTP伺服器,這一點真的非常好用,所以儘管有其他答主提到過,還是忍不住要再分享一下! 

python3 -m http.server 8888

在本地,輸入網址 localhost:8888即可訪問,預設會列出你的本地目錄: 

4f60baa6725c09295b084c5b2a368ec.png

3、Python的哲學

每次讀到Python之禪的時候,總是情不自禁地陷入優美的意境不能自拔,恨不能隨時隨地都能拿來拜讀?下面這行程式碼能夠滿足你的願望: 

python -c "import this"

回車!然後,你便會發現你的螢幕上已然出現了心心念唸的Python的ZEN(禪意)。神不神奇?驚不驚喜?

30ffc4c238c2e2acaf55de2269435cc.png

4、 簡易計算器

print(eval(input()))

這個單行程式碼只用了預設引入的函式,其意義也是單純而透明:讀入一個python表示式並求值,將其結果輸出到螢幕,當個簡單計算器綽綽有餘。

5、 今天距離明年元旦還有多少天?

不會跟妹子搭訕?教你一招搭訕大法:故作神秘地問她知不知道還有多少天就是明年的元旦了,趁妹子一臉懵掉你開啟編譯器,瀟灑地敲出以下這行程式碼,然後看著結果告訴她:你看,距離明年元旦還有XX天! 

python -c """import datetime;today = datetime.date.today();someday = datetime.date(2019, 1, 1);diff = someday 
- today;print str(diff.days)+' days' “""

36b34b983db0f45629e5ba7c7e69dba.png

妹子接下來可能會有一波感嘆:哎呀,還有XX天了? 日子過得真快啊!

然後你轉手將程式碼一改,把元旦的時間改為你和妹子認識的時間,然後跟妹子說:你看,我們都認識這麼久了,還沒一起吃過飯呢,不如今晚下班請你吃個飯?

接下來,一定要記得按時下班啊!

d8b2b251e23ead894ef913f4e331251.png

其實,就單行而言,Python並不會比其它的多正規化語言更強,實際上由於lambda表現能力弱,導致Python本身要更弱一些。

但是,存在lambda就存在無限可能。Python中的import語句是可以透過呼叫__builtin__模組中的__import__來代替的,更有意思的是,__builtin__模組內的所有內容均是自動import的。

四、附加武功秘籍

1、換臉術

這個10進位制轉換16進位制的單行程式碼就是lambda無限可能的有力論證:

print("#"+''.join(["{:0>2}".format(hex(int(a))[2:])for a in __import__('sys').argv[1:]]))

8a32258dc7a10e102eb3e1af2227b91.png

2、星羅陣

這樣的畫圖,只是簡單的用到了呼叫時傳遞引數而已。

[print('n'.join(" "*abs(c)+"* "*(a-abs(c))for c in range(-a+1,a))) for a in[int(__import__('sys').argv[1])]]

3c8f11a99655b66537befd22b931543.png

3、操控術

如果呼叫更復雜的功能呢?例如用Flask來個Hello world?

[y[0].run() for y in [(x, x.route('/')(lambda :'Hello, world!')) for x in [__import__('flask').Flask(__name__)]]]

使用列表生成的實現看起來可能不太優雅,但並不會影響效果。

4、凌波微步

或者你還想看看帶視窗的心形曲線?不要看那個黑黑的ASCII顏藝的話可以這樣(需要numpy和matplotlib) 

[plt.show() for _, __, ___, plt in [(plt.plot(x, y1, color='r'), plt.plot(x, y2, color='r'), np, plt) for x, y1, y2, 
np, plt in [(x, 0.618*np.abs(x) - 0.8* np.sqrt(64-x**2), 0.618*np.abs(x) + 0.8* np.sqrt(64-x**2), np, plt) for x, np, 
plt in [(np.linspace(-8, 8, 1024), np, plt) for np, plt in [(__import__('numpy'), __import__('pylab'))]]]]]

70029991497b4158ded0bf8999db8d5.png

5、吸星大法

如果你是深度學習煉丹師,那不妨來個一行預測?

[print(decode(model.predict(x))) for model, x, decode in [(ResNet50(weights='imagenet'), preprocess_input
(np.expand_dims(image.img_to_array(image.load_img('elephant.jpg', target_size=(224, 224))), axis=0)), decode) 
for ResNet50, image, preprocess_input, np, decode in [(kav.applications.resnet50.ResNet50, kp.preprocessing.image, 
kav.applications.resnet50.preprocess_input, np, kav.applications.resnet50.decode_predictions) for kav, kp, np in 
[(__import__('keras.applications.resnet50'), __import__('keras.preprocessing.image'), __import__('numpy'))]]]]

705a13b9917beaba7dadbe54ad2a4c3.png

按照這樣的方法,幾乎所有的程式碼最終都能壓到同一行裡;配合Python各種強大的包,寫出個一行人臉識別、一行機器學習、一行網頁爬蟲等都不會有什麼問題。

綜上,“一行程式碼”可供修煉的“功夫”多種多樣,雖然有趣,但並沒有太多的實際意義,在實際工作中沒有必要強行把所有的程式碼都壓縮到一行中實現。當然,如果是為了向妹子炫技的話,那麼請儘管展示你的才華!

python學習網,大量的免費,歡迎線上學習!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/810/viewspace-2835799/,如需轉載,請註明出處,否則將追究法律責任。

相關文章