如果只寫一行代碼能實現什麼?看完我徹底服了

文 | 極光

來源:Python 技術「ID: pythonall」

人生苦短,我用 Python。這句話大家應該相當熟悉了吧,那 Python 到底有多簡單呢,今天就來帶大家看看,如果只寫一行代碼,Python 可以實現什麼?

心形字符

這個比較容易理解,運行代碼直接看結果:

print('\n'.join([''.join([('Python技術'[(x-y)%len('Python技術')] 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)]))

輸出結果

9*9乘法口訣表

這個也簡單,小時候上學天天都要背的,運行看結果:

print('\n'.join([' '.join(['%s*%s=%-2s' % (y, x, x*y) for y in range(1, x+1)]) for x in range(1, 10)]))

輸出結果

斐波拉契數列

這是個數列又稱黃金分割數列,即數列從第3項開始,每一項都等於前兩項之和。

print([x[0] for x in [(a[i][0], a.append([a[i][1],a[i][0]+a[i][1]])) for a in ([[1,1]], ) for i in range(30)]])
輸出結果

解決 FizzBuzz 問題

描述:給你一個整數 n. 從 1 到 n 按照下面的規則打印每個數:

  1. 如果這個數被3整除,打印fizz;

  2. 如果這個數被5整除,打印buzz;

  3. 如果這個數能同時被3和5整除,打印fizz buzz。

for x in range(1,101): print("fizz"[x%3*4:]+"buzz"[x%5*4:] or x)
輸出結果

Mandelbrot 圖像

Mandelbrot 圖實際上是由 Mandelbrot 集合構成的圖像,Mandelbrot圖像中的每個位置都對應於公式 N=x+y*i 中的一個複數。

print('\n'.join([''.join(['*'if abs((lambda a: lambda z,c,n:a(a,z,c,n))(lambda s,z,c,n:z if n==0 else s(s,z*z+c,c,n-1))(0,0.02*x+0.05j*y,40))<2 else ' ' for x in range(-80,20)]) for y in range(-20,20)]))

輸出結果

1000以內的素數

計算並輸出1-1000之間的所有素數。

print(' '.join([str(item) for item in filter(lambda x: not [x%i for i in range(2,x) if x%i==0],range(2,1001))]))

輸出結果

八皇后問題

八皇后問題,一個古老而著名的問題,是回溯算法的典型案例。該問題由國際西洋棋棋手馬克斯·貝瑟爾於 1848 年提出:在 8×8 格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。

[__import__('sys').stdout.write('\n'.join('.'*i+'Q'+'.'*(8-i-1) for i in vec)+"\n========\n") for vec in __import__('itertools').permutations(range(8)) if 8==len(set(vec[i]+i for i in range(8)))==len(set(vec[i]-i for i in range(8)))]
輸出結果

生成迷宮

隨機輸出一個迷宮,看你能不能走出來。

print(''.join(__import__('random').choice('\u2571\u2572') for i in range(50*24)))
輸出結果

屏幕滾動輸出

終端屏幕上無限滾動輸出你定義的文字或字符。

python -c "while 1:import random;print(random.choice(' 一二三'), end='')"

輸出結果

總結

本文爲大家介紹瞭如何通過 Python 寫一行代碼進行復雜的計算或者輸出圖像,是不是你也感覺到了 Python 的強大,這下又有在朋友面前裝 X 的資本了。

PS公號內回覆 :Python,即可進入Python 新手學習交流羣,一起100天計劃!

老規矩,兄弟們還記得麼,右下角的 “在看” 點一下如果感覺文章內容不錯的話,記得分享朋友圈讓更多的人知道!

代碼獲取方式

識別文末二維碼,回覆:200518

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章