Python一行代碼竟能幹這種事,同學都歡呼:要向女神表白!

2020-12-05 數據分析師攻略

@數據分析師攻略 公眾號

關注、學習更多數據分析的知識與資訊

------

Python的語法十分簡潔,簡潔到只需要一行代碼,即可輸出意想不到的效果。一行代碼到底有什麼獨特的魅力,下面一起來感受一下吧!

1、畫一個愛心

作為一個Python程式設計師,自從接觸Python就有種愛不釋手的感覺,逐漸地被它的簡潔高效的代碼所吸引,所有我想用一行Python代碼來畫出一個心形向Python語句表白。學會的小夥伴,也可以這行代碼來畫一個愛心,向自己的女神表白哦!

print('\n'.join([''.join([('HelloPython'[(x-y) % len('HelloPython')] 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(30, -30, -1)]))

2、畫一個Mandelbrot

有一個著名的圖像叫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值。

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==0else 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)]))

3、列印99乘法表

小時候剛學習99乘法表,數學老師經常布置的作業就是背誦和默寫99乘法表,那段時候感覺這個表又神奇,又很難學。但多虧老師的諄諄教導,如今我們對99乘法表簡直可以倒背如流。可是,你也許不知道,Python能用一行代碼就可以將99乘法表整齊地輸出來了,是不是更神奇了!

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

4、讓兩個變量交換值

這也許是Python一行代碼最簡單的表達方式,讓兩個變量交換值。以前習慣了使用第三個變量作為中間變量,用這個中間變量分別給兩個變量去交換值,現在來看那都複雜了,一行代碼能搞定的事情,就沒中間變量什麼事。

5、排序算法

Python一行代碼實現排序算法,就這一點足以體現Python代碼的簡潔高效的魅力。

6、八皇后問題

玩過西洋棋的人都知道,八皇后問題表述為:在8×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)))]

7、列印迷宮

工作累了,列印一個迷宮來玩會吧。

print(''.join(__import__('random').choice('\u2571\u2572') for i in range(30*25)))

8、計算1-100之間的素數

質數又稱素數。一個大於1的自然數,除了1和它自身外,不能被其他自然數整除的數叫做質數,1-100之間的素數有哪些?快來看看。

print(' '.join([str(item) for item in filter(lambda x: all(map(lambda p: x % p!= 0, range(2, x))), range(2, 101))]))

輸出結果:

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

9、輸出前100項斐波那契數列的值

斐波那契數列指的是這樣一個數列:0、1、1、2、3、5、8、13、21、34、……,這個數列從第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(100) ]])

相關焦點

  • Python的一行代碼有何魅力?lambda匿名函數都自嘆不如
    @數據分析師攻略 公眾號關注、學習更多數據分析的知識與資訊------Python代碼具有簡潔易懂的特點,說明它有許多有趣且簡潔的代碼編寫方法,這也讓很多零基礎入門學習編程的同學偏愛從Python學起,接觸這個語言的人對Python這種簡潔的代碼編寫方法都愛不釋手。
  • 一行Python 代碼能實現什麼喪心病狂的功能?|CSDN博文精選
    基礎工作之一,就是要把這些圖片數據讀出來,組織成一個三維的數據結構(實際上是四維的,因為每個像素有 RGBA 四個通道)。這個數據結構,自然是 numpy 的 ndarray 對象,讀取圖像文件我習慣使用 PIL。
  • 使用一行Python代碼從圖像讀取文本
    雖然圖像分類和涉及到一定程度計算機視覺的任務可能需要大量的代碼和紮實的理解,但是從格式良好的圖像中讀取文本在Python中卻是簡單的,並且可以應用於許多現實生活中的問題。在今天的帖子中,我想證明這一點。雖然會安裝一些庫,但不會花很多時間。
  • 一行Python代碼寫階乘函數
    背景我以前用Dart寫過一行的階乘函數:fact(double n) => n < 0 ? throw ('n must be bigger than 0') : n == 0 ?要求使用一行代碼編寫函數。調用方式為fact(x),其中x為要求階乘的數。不得使用分號以變相湊成一行。
  • 絲襪女神被一28歲程式設計師當場表白,慘遭被拒怒摔鮮花尷尬離場
    最近一個28歲程式設計師小夥子用了15個機器人表白的方式令網友們大開眼界。可惜的是結局不美好,女神當場就拒絕了小夥子的表白。氣的小夥子怒摔鮮花,當時圍觀的人那麼多,這慘被拒絕可是讓其很沒面子啊,只得尷尬離場。有網友神吐槽,可能是你戴的眼鏡一看就是一宅男diao絲模樣,況且頭髮都有開始禿的跡象了,難怪女神會拒絕你。
  • 一行代碼的大用處!看到最後一個我終於忍不住了...
    傳智播客博學谷微信號:boxuegu-get最新最全的IT技能免費領取各種視頻資料俗話說得好:兩個黃鸝鳴翠柳,一行代碼上青天!就一行你想讓我幹啥?一行代碼畫個愛心print('\n'.join([''.join([('Love'[(x-y) %len('Love')]if((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3一行代碼輸出Mandelbrot圖像print('\n'.join([''.join
  • 代碼詳解:Python虛擬環境的原理及使用
    (venv) % pip freeze > requirements.txt更新軟體包或安裝新軟體包時,都可使用相同的命令重寫需求文件。現在,任何共享項目的人都可以使用requirements.txt文件,通過複製環境以在系統上運行項目。複製環境等等——究竟是怎麼做到的?
  • python基礎教程之python是什麼?
    當你用一種語言開始作真正的軟體開發時,你除了編寫代碼外,還需要很多基本的已經寫好的現成的東西,來幫助你加快開發進度。比如說,要編寫一個電子郵件客戶端,如果先從最底層開始編寫網絡協議相關的代碼,那估計一年半載也開發不出來。
  • 目標檢測必須要OpenCV?10行Python代碼也能實現,親測好用!
    註:如果運行代碼時出現下列異常:則需要安裝Numpy+MKL依賴,下載對應的.whl文件並放在Scripts文件夾下,用pip安裝.whl文件即可。下載地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy檢測結果來看看下面這2張示例圖片以及經過檢測後保存的新圖片。
  • Python の在 VSCode 中使用 IPython Kernel 的方法
    要達到的效果:只需按下 Ctrl+;,選中的幾行代碼,就會自動發送到 IPython Kernel,並運行,得到結果!當然,快捷鍵也可以另行設置!為什麼要這麼做:首先,這種配置方式,比較輕量快速;主要用於,增加寫代碼時的「互動性」,可以邊寫代碼,邊測試;例如,在寫代碼時候,快速測試下,一行或幾行代碼,看看效果; 所以,非常適合新手,邊寫邊學習,或者,需要寫個幾十行代碼,迅速解決問題,的情況; 另外,這種配置也比較方便 Debug 的過程,因為可以逐行運行,或者,不按順序的運行測試任意一行代碼;基本配置
  • Python語言基礎50課(3)​|一行代碼統計序列ATCG含量
    (myseq.upper())])上面的代碼主要是兩個點(1)列表生成式;(2)集合上期我們提到的表達式:[exp for iter_var in iterable]也就是說,一般情況下,我們去遍歷ATCG,上述的代碼也會根據下面的步驟進行:myseq = 'CTAGCGCcttagcatcctatcatgttcacNNNATCTCTAGCGCGGCAT
  • 初識python
    2,python歷史。宏觀上:python2 與 python3 區別:python2 源碼不標準,混亂,重複代碼太多,python3 統一 標準,去除重複代碼。3,python的環境。編譯型:一次性將所有程序編譯成二進位文件。缺點:開發效率低,不能跨平臺。優點:運行速度快。
  • python是什麼:Python相關內容了解
    今天來聊聊一篇關於python是什麼:Python相關內容了解的文章,現在就為大家來簡單介紹下python是什麼:Python相關內容了解,希望對各位小夥伴們有所幫助。當你用一種語言開始作真正的軟體開發時,你除了編寫代碼外,還需要很多基本的已經寫好的現成的東西,來幫助你加快開發進度。比如說,要編寫一個電子郵件客戶端,如果先從最底層開始編寫網絡協議相關的代碼,那估計一年半載也開發不出來。
  • 代碼跑得慢甩鍋Python?手把手教你如何給代碼提速30%
    其實某個特定程序(無論使用何種程式語言)的運行速度是快還是慢,在很大程度上取決於編寫該程序的開發人員自身素質,以及他們編寫優化而高效代碼的能力。Medium上一位小哥就詳細講了講如何讓python提速30%,以此證明代碼跑得慢不是python的問題,而是代碼本身的問題。
  • 查閱arXiv論文新神器,一行代碼比較版本差別,Github新開源!
    然而,等你好不容易看完了文章,發現作者又上傳了V2、V3,一眼望去卻看不出差別,這種情況令人頭疼不已,難道又要花幾個晚上時間研究新版本?Github上的一個比較預印本論文版本差別的工具也許能幫到你,而且只需一行代碼就能實現。使用教程運行這個工具你需要安裝PyPI包、以及帶有pdflatex和latexdiff的文本分布工具。
  • 「理工男」化學方程式表白女神:你的「鎂」奪走我的「鋅」
    「理工男」化學方程式表白女神:你的「鎂」奪走我的「鋅」 2019-11-13 21:03 來源:澎湃新聞·澎湃號·媒體
  • python3.8操作(插入,刪除)mysql/MariaDB資料庫
    01主題大家好,我是義縣遊學電子科技.今天來跟大家說一個工作中常用到的操作,python3.8操作MariaDB資料庫.因為MariaDB屬於mysql分支因此資料庫命令語句都是通用的非常方便.03python代碼部分#pip install mysql-connectorimport mysql.connectorimport time# INSERT INTO public.a1(# name, age)# VALUES ('金源', 37);# ALTER TABLE a1 ADD COLUMN id SERIAL PRIMARY KEY;mydb
  • 科悟學院介紹什麼是Python、python能做什麼?
    ,這些代碼就是計算機語言,它隨著我們的手勢等操作在後臺運行,直接指揮硬體來幹活,以達到我們的各種操作目的。win系統的同學可以按下win+r鍵,在彈出小窗口輸入cmd命令再回車即可看到彈出的Dos命令面板,接下來我們在Dos面板中輸入 python 即可進入Python的解釋器。
  • 「蠟燭玫瑰陣」表白屢屢失敗,竟是因為直男們缺少心理學常識
    經常會聽到新聞:男生為了追求女生,擺下心形蠟燭,搞了好大陣仗,圍觀群眾無不心動,唯有女神無動於衷,拒絕交往。這種堪稱「直男強撩」的表白方式,除非二人早已芳心暗許,否則如此突兀表白,怕是被拒絕的可能遠遠超過欣然應允吧。
  • python編程從入門到實踐:讀取整個文件和創建包含文件各行的內容
    1.python學習筆記:在文件編輯器中新建一個文件,寫幾句話來總結一下你至此學到的Python知識,其中每一行都以「In python you can」打頭。將這個文件命名為learning_python.txt,並將其存儲到為完成本章練習而編寫的程序所在的目錄中。