一行代碼能實現什麼奇葩功能?

2022-01-18 菜鳥教程

如果只允許你寫一行代碼,你能實現什麼樣的功能?

mandelbrot 圖像中文名叫曼德勃羅圖像。Mandelbrot 圖像中的每個位置都對應於公式 N=x+y*i 中的一個複數。其實數部分是 x,虛數部分是 y,i 是 -1 的平方根。圖像中各個位置的 x 和 y 坐標對應於虛數的 x 和 y 部分。百度百科給出的圖形是這樣的。

看不懂?沒關係,我們直接來看效果。(左右滑動查看所有代碼)

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)]))

還記得我們熟記於心的九九乘法表嗎?來,我們來鞏固下,我們用一行代碼列印出來。(左右滑動查看所有代碼)

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

不會表白?一行代碼告訴你!(左右滑動查看所有代碼)

print('\n'.join([''.join([('AndyLove'[(x-y)%8]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 編譯器中輸入下面的代碼。(左右滑動查看所有代碼)

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

看下執行過程中的部分動態圖。

再截圖一張大圖看下,是不是很漂亮、很炫酷!

這個畫圖庫用的是 turtle,你還可以用它來畫五星紅旗。

素數又稱質數。一個大於 1 的自然數,除了 1 和它自身外,不能整除其他自然數的數叫做素數。(左右滑動查看所有代碼)

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, 101))]))

結果是:

斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為『兔子數列』,這個數列從第 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)]])

看下執行結果:

快速排序是一種經典而高效的排序算法。(左右滑動查看所有代碼)

quickSort = lambda array: array if len(array) <= 1 else quickSort([item for item in array[1:] if item <= array[0]]) + [array[0]] + quickSort([item for item in array[1:] if item > array[0]])
array = [9, 11, 88, 32, 8]
print(quickSort(array))

你們知道 Python 之禪麼?知道『人生苦短,我用 Python』這句經典的出處麼?用下面一行代碼就可以列印 Python 之禪。(左右滑動查看所有代碼)

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

給大家一個參考的翻譯:

優美勝於醜陋。
顯式勝於隱式。
簡單勝於複雜。
複雜勝於難懂。
扁平勝於嵌套。
稀疏勝於緊密。
可讀性應當被重視。
儘管實用性會打敗純粹性,特例也不能凌駕於規則之上。
不要忽略任何錯誤,除非你確認要這麼做
面對不明確的定義,拒絕猜測的誘惑。
找到一種最好唯一的一種方法去解決問題。
雖然一開始這種方法並不是顯而易見,因為你不是 Python 之父。
做好過不做,但沒有思考的做還不如不做
如果實現很難說明,那它是個壞想法。
如果實現容易解釋,那它有可能是個好想法。
命名空間是個絕妙的想法,請多加利用。

導入一個包就能看漫畫,執行代碼後系統會自動打開漫畫的頁面。

import antigravity

給大家一個參考的翻譯:

上圖:
「你在飛!怎麼做到的?」
「Python!」

下左:

「我昨晚學習了 Python,一切都是那麼簡單」

「運行 HELLO WORLD 只需要 print 「Hello World!」」

下中:
「我還是不明白……動態類型,還是空格?」

「來加入我們吧,編程又再次變得有趣起來了,Python 是一個全新的世界」

「但你是怎麼飛起來的?」

下右:

「我只是輸入了 import antigravity」

「就這樣?」

「我還對藥品櫃中的所有東西進行了採樣比較」(暗指他對比過多種程式語言,但還是覺得 Python 最簡單)

「但我想這就是 Python.」

cmd 命令下輸入下列代碼實現單線迷宮。(左右滑動查看所有代碼)

python -c "while 1:import random;print(random.choice('|| __'), end='')"


使用此命令,建立一個內網可以快速訪問的 WEB 服務。

python -m http.server 8080

輸入 http://localhost:8080/ 網站就可以訪問的 WEB 服務了。

用隨機的 unicode 字符打樣出來,完美模擬了老虎機的效果,按回車鍵停止。請看下面動態圖。(左右滑動查看所有代碼)

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

什麼是八皇后問題?我們看下百度百科的解釋:八皇后問題,是一個古老而著名的問題,是回溯算法的典型案例。該問題是國際西洋棋棋手馬克斯·貝瑟爾於 1848 年提出:在 8×8 格的西洋棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。高斯認為有 96 種方案。1854 年在柏林的象棋雜誌上不同的作者發表了40 種不同的解,後來有人用圖論的方法解出 92 種結果。計算機發明後,有多種計算機語言可以解決此問題。

用下列代碼可以列出所有結果,共 92 種。(左右滑動查看所有代碼)

[__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([i for item in ab for i in item])

給出一個多維數值 ab,通過這個方法變成一維數組。

ab = [[1, 2, 3], [5, 8], [7, 8, 9]]
print([i for item in ab for i in item])

# 結果
[1, 2, 3, 5, 8, 7, 8, 9]

2 的 1000 次方的值很大,把結果每位數都加起來等於多少呢?

print(sum(map(int, str(2**1000))))

# 結果 
1366

你覺得還有哪些好玩的、有意思的一行代碼實現的功能,歡迎留言!

相關焦點

  • 一行Python代碼能實現什麼奇葩功能?
    ,你能夠實現什麼樣的功能?來,我們來鞏固下,我們用一行代碼列印出來。(左右滑動查看所有代碼)print('\n'.join([' '.join(['%s*%s=%-2s' % (y, x, x*y) for y in range(1, x+1)]) for x in range(1, 10)]))
  • 一行Python代碼能實現什麼喪心病狂的功能?
    (img)6data = np.stack(data, axis=0)我把這些代碼寫成一行,卻毫無晦澀艱深之感,仍然像詩歌一樣優美、像自然語言一樣通俗!那一刻,我腦洞大開,很想知道 python 高手們只用一行代碼都能幹些什麼?當然,限定條件是不能引用自定義的模塊,可以使用內置模塊或通用的第三方模塊。上網一搜,發現這個問題好像是 python 的專屬問題,其他語言很難用一行代碼做點什麼。知乎上有一篇名為《一行 Python 能實現什麼喪心病狂的功能?》
  • 一行Python 代碼能實現什麼喪心病狂的功能?|CSDN博文精選
    因此,需要導入兩個模塊:import numpy as npfrom PIL import Image接下來,我用一行代碼就把 109 張圖片讀到了一個 109x256x256x4 的 numpy 數組中,耗時 172 毫秒:data = np.stack([np.array(Image.open('head%d.png'%i)) for i in range
  • 一行 Python 代碼能實現什麼喪心病狂的功能? | CSDN博文精選
    因此,需要導入兩個模塊:import numpy as npfrom PIL import Image接下來,我用一行代碼就把 109 張圖片讀到了一個 109x256x256x4 的 numpy 數組中,耗時 172 毫秒:data = np.stack([np.array(Image.open('head%d.png'%i))
  • 一行Python 代碼能實現這麼多喪心病狂的功能?
    最近看知乎上有一篇名為《一行 Python 能實現什麼喪心病狂的功能?》(https://www.zhihu.com/question/37046157)的帖子,點進去發現一行Python代碼可以做這麼多喪心病狂的功能!整理了一下知乎上這篇文章的內容,頗覺有趣,分享給大家。
  • 一行Python代碼能幹什麼?有意思!
    Python 能實現什麼喪心病狂的功能?》(https://www.zhihu.com/question/37046157)的帖子,點進去發現一行Python代碼可以做這麼多喪心病狂的功能!整理了一下知乎上這篇文章的內容,頗覺有趣,分享給大家。
  • 從微信「拍一拍」,我想到了那些神奇的一行代碼功能
    「拍一拍」僅一行代碼實現,微信史上最短功能代碼長什麼樣?更有意思的是,微信之父張小龍在朋友圈爆料,「拍一拍」這個和 QQ 戳一戳相似的功能只用一行代碼即可實現,可以說是微信史上最短一行代碼功能。雖然這行代碼的真實性不能保證,但是大致原理應該差不了太多,在微信的框架和已有的積累下,一行代碼實現一個功能也不算難事。
  • 一行 CSS 代碼的魅力
    之前在知乎看到一個很有意思的討論 一行代碼可以做什麼?[1]那麼,一行 CSS 代碼又能不能搞點事情呢?CSS Battle首先,這讓我想到了,年初的時候沉迷的一個網站 CSS Battle[2] 。當然,CSS Battle 裡面還有更多更複雜的挑戰,也有很多能夠通過一行代碼實現的,感興趣的嘗試下。一行背景代碼要說到 CSS 最有意思的屬性,我覺得背景(background)肯定能夠獲得很多選票。
  • 代碼又長又複雜?總結Python一行代碼就能幹的事兒,不能更簡單了
    一行代碼列印9*9乘法表一行輸出9*9 乘法表只是把原本應該寫兩個for循環的代碼做了一下精簡壓縮。一行代碼交換兩個變量的值如果學過C語言的朋友看到下面這種交換變量的方式會覺得很奇葩。a, b = b, a因為Python的變量並不直接存儲值,而只是引用了一個內存地址,所以在交換變量時,只是交換了引用的地址。
  • 一行代碼能做什麼?看到最後一個我終於忍不住……
    技術能力的提升需要不斷的學習和實踐,面對一行行枯燥的代碼,做出有趣的事情,更能增加學習的興趣和樂趣。那一行python代碼能做出什麼有趣的東西?C/C++有什麼趣味設計?有哪些趣味的Scratch小遊戲?
  • 一行代碼實現Python並行處理
    worker = Consumer(queue)        worker.start()        workers.append(worker)    return workersif __name__ == '__main__':    Producer()這段代碼能正確的運行
  • 如何使用VBA代碼實現Excel的查找和替換功能?
    實現的方式有兩種,將匹配方式lookat設置為xlPart,或者在查找值使用通配符。依然以上節所示的數據表為例,如需查找人名中包含"星光"的語文成績,可以使用以下代碼。代碼1,xlPart方法..……相比於xlPart方法,通配符要更靈活一些,它不但能表達包含關係,也能表達以某個字符開始或結束的查找值,比如看見*,表達了以看見兩個字為開頭的數據。*星光,則表達了以星光兩個字結束的數據。除此之外,還有一個通配符問號?,一個問號只代表一個字符。比如,如果我們需要查找由4個字符構成的數據,查找值可以設置為????
  • Python一行代碼,能玩這麼多童年的遊戲?
    來源 | 早起 Python責編 | Carol封圖 | CSDN 下載自視覺中國兒童節就要來了,雖然禿頭程式設計師沒有頭髮,但是童心還是一直都在的,今天就分享一個私藏的GitHub項目——free-python-games,一行代碼就能進入使用Python開發的小遊戲快樂玩耍!
  • Spring如何使用4行代碼優雅的實現模糊查詢,精確查詢功能
    其中模糊查詢,精確查詢,分頁查詢也算是不好對付的功能,需要手寫大量重複的代碼來實現相關的功能,如何優雅的實現查詢功能呢? 首先上兩張截圖。第一張截圖是分頁列出活動,可以根據活動名稱和活動內容進行模糊查詢。 舉辦機構,舉辦年份,活動分類為可選項。如指定了年份就會檢索相應年份的數據。
  • 這些一行 JS 實現功能的代碼,讓你看起來像一個前端專家
    但是,它也能讓你只用一行代碼就能做一些了不起的事情。看看這 13 句 JavaScript 單行代碼,會讓你看起來像個專家!1.以下代碼是最簡單的方式之一。這 2 個功能將幫助你將華氏溫度轉換為攝氏溫度,反之亦然。
  • Excel宏功能技巧進階-三行代碼實現批量隔行插入表格
    大家好,昨天給大家分享了Excel宏功能的隔行插入技巧。但是很多時候我們既然用到了宏這個功能,那麼肯定是文檔中有很多的數據。表格中有1000條記錄,用我們昨天的方法完成隔行插入製作工資條就需要運行1000次,即便是設置了快捷鍵也需要按1000次鍵盤。所以並不能滿足我們的需求。
  • 一行代碼實現 UIView 鏤空效果
    QQ : 3442093904 這是一種實現 UIView 鏤空效果的方案,可以快速實現任意形狀的鏤空、文字的鏤空、帶鏤空的毛玻璃效果等。本質上是 UIView 的 maskView 效果的「取反」。前言首先來複習一下遮罩效果的實現。
  • Python一行代碼能做什麼,30個實用案例代碼詳解
    Python語法簡潔,能夠用一行代碼實現很多有趣的功能,這次來整理30個常見的Python一行代碼集合。
  • Python人工智慧之圖片識別,Python3一行代碼實現圖片文字識別
    我們運行代碼後識別的結果,有幾個字沒有正確識別,但是大多數字都能識別出來。一行代碼就能識別圖片,我們背後要做些準備工作的下面就來講講這幾個庫的安裝,因為只有這幾個庫安裝好以後Python才能實現一行代碼實現圖片文字識別一,pytesseract和PIL的安裝安裝這兩個包可以藉助
  • 一行JAVA代碼如何運行起來?
    不過JAVA語言的上手難度就比PHP、前端高很多了,所以今天我們給大家講解下一行JAVA代碼到底是如何運行起來的,JAVA後浪們可以以此為入門Java的基礎,開啟Java開發、人生贏家之路。Java是一種半解釋型語言,相對的有解釋型語言Python&PHP、編譯型語言C&C++。