日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Pyhton为什么这么厉害?无意中从一道奥数题发现Python真的爽翻了

發布時間:2024/9/30 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pyhton为什么这么厉害?无意中从一道奥数题发现Python真的爽翻了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在小編我剛接觸Python的時候,心里就在想:Python的代碼寫這么少,就可以實現一個小功能了!確實也有點方便啊!或許出于程序員,我很想將每一門語言都學一遍,不管學好學差,至少我都了解,心里有個底,總是好的!

之前在一個平臺有看到這么一張圖片,引發了我的興趣:

這個題目有點意思!不過對于做這題的小朋友來說,確實難度有點大!

這道題本身不難,只需要簡單的推理就可以做出來:

3位數+3位數等于4位數,那么“要”只能是1。
同上,“好”+“要”>=10,因此“好”只能是9,“做”是0。
個位是兩個“好”相加,于是“事”是8。

所以答案是,“要做好事”=1098。不過今天的重點并不在這里,因為我這張圖片下方貼了一段代碼,大概是有哪位家長無聊寫的:

這里有我自己整理了一套最新的python系統學習教程,包括從基礎的python腳本到web開發、 爬蟲、數據分析、數據可視化、機器學習等。 小編這里推薦加小編的python學習群:895,817, 687


程序員現在已經很普遍了,隨便一個什么事情,或許程序員都可以以代碼的形式解答了!

不過仔細看看這段代碼貌似是Arduino的C吧!

Anyway,程序的思路很簡單,用窮舉法把所有的數字都試一遍,找出滿足條件(加法等式)的組合。作為一個Python粉,我覺得這樣的代碼實在缺乏美感,特別是套了4層循環,而且還用了一個特別low的判斷來檢查4個數字是不是相互重復(根據題目,每個漢字代表一個不同的數字,所以相互之間不應該重復)。這道題目只是4位數,要是位數更多的話,這么寫真的要累死啦。

那么用Python寫這樣一個程序,能不能簡潔一點呢?我們換個思路,4個漢字,每個漢字的取值范圍都是0-9,且相互之間不重復,這相當于從包含10個元素的集合[0,9]中任取4個元素的排列(permutation),即P(10,4)。學過排列組合的話我們就可以計算出P(10,4) = 10x9x8x7 = 5040,也就是說一共有5040種不同的排列方式。

Python里面有一個神器叫迭代器(iterator),而且Python還自帶了itertools標準庫,用來產生各種各樣的迭代器,其中就包括排列組合迭代器。這樣一來事情就簡單了,我們先產生一個排列迭代器,然后再用for迭代它,就可以找出滿足條件的排列了,不需要寫4層循環,也不需要檢查4個數字是否相互重復:

只需要5行代碼!而且其實最后一行break沒有也無所謂,上面那段C的代碼也沒有做循環跳出嘛。運行一下看結果:

YAO:1, ZUO:0, HAO:9, SHI:8

完美!

總結

以上是生活随笔為你收集整理的Pyhton为什么这么厉害?无意中从一道奥数题发现Python真的爽翻了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。