您好,登錄后才能下訂單哦!
簡單的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)])
如果換成純漢字的版本,則可能會出現較明顯的變形,所以為保證妹子不理解成“變心”,建議使用中英文結合的方式。你get到了嗎?
2、 美麗的螺旋
或許你覺得心型圖案太俗套,那么試試下面這個美麗的螺旋?在python編譯器中輸入下面的代碼,接下來讓我們來見證奇跡吧!
exec """\nfrom turtle import *\nfor i in range(500): \n forward(i)\n left(91)\n"""
二、娛樂縱情版
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)]”
2、老虎機
猜數字不過癮?不如再來試試迷你老虎機,用隨機的unicode字符打樣出來,完美模擬了老虎機的效果!
python3 -c "import random;p=lambda:random.choice('7?????????');[print('|'.join([p(),p(),p()]),end='\r') for i in range(8**5)]”
3、 一行代碼幫你選彩票號碼
當然,還有更刺激的彩票搖號,不過與其將命運交給彩票站的投注機器,不如自己寫一行代碼,喏,彩票選號代碼了解一下:
python -c "from random import sample; print 'Lotto numbers: %s' % sample(range(1, 50), 6)"
友情提示:彩票有風險,出手須謹慎,至于這行代碼給出的結果是否能夠中獎,那就只能看你的運氣啦!
三、學府深造版
1、一行代碼實現GUI用戶界面
python -c "from Tkinter import *;root = Tk();w = Label(root, text='你好!慕課網!');w.pack();root.mainloop()”
一行代碼實現GUI用戶界面有木有!
2、一行代碼啟動一個http服務器
一行代碼可以啟動一個HTTP服務器,這一點真的非常好用,所以盡管有其他答主提到過,還是忍不住要再分享一下!
python3 -m http.server 8888
在本地,輸入網址 localhost:8888即可訪問,默認會列出你的本地目錄:
3、Python的哲學
每次讀到Python之禪的時候,總是情不自禁地陷入優美的意境不能自拔,恨不能隨時隨地都能拿來拜讀?下面這行代碼能夠滿足你的愿望:
python -c "import this"
回車!然后,你便會發現你的屏幕上已然出現了心心念念的Python的ZEN(禪意)。神不神奇?驚不驚喜?
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' “""
妹子接下來可能會有一波感嘆:哎呀,還有XX天了? 日子過得真快啊!
然后你轉手將代碼一改,把元旦的時間改為你和妹子認識的時間,然后跟妹子說:你看,我們都認識這么久了,還沒一起吃過飯呢,不如今晚下班請你吃個飯?
接下來,一定要記得按時下班啊!
其實,就單行而言,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:]]))
2、星羅陣
這樣的畫圖,只是簡單的用到了調用時傳遞參數而已。
[print('\n'.join(" "*abs(c)+"* "*(a-abs(c))for c in range(-a+1,a))) for a in[int(__import__('sys').argv[1])]]
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'))]]]]]
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'))]]]]
按照這樣的方法,幾乎所有的代碼最終都能壓到同一行里;配合Python各種強大的包,寫出個一行人臉識別、一行機器學習、一行網頁爬蟲等都不會有什么問題。
綜上,“一行代碼”可供修煉的“功夫”多種多樣,雖然有趣,但并沒有太多的實際意義,在實際工作中沒有必要強行把所有的代碼都壓縮到一行中實現。當然,如果是為了向妹子炫技的話,那么請盡管展示你的才華!
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。