Python常見面試(習題)——水仙花數


今天,給大家分享一個習題。

 

用python輸出100到1000以內的水仙花數。

 

相信很多小伙伴都聽到過,或者遇到過這個題目。

 

那么今天就來帶大家做一做這道題。

 

首先,我們要知道什么是水仙花數,

 

(@_@;)水仙花數是什么,我真的不知道啊???

 

讓我們來百度一下(內容來自百度百科)。

 

水仙花數(Narcissistic number)也被稱為超完全數字不變數(pluperfect digital invariant, PPDI)、自戀數、自冪數、阿姆斯壯數或阿姆斯特朗數(Armstrong number),水仙花數是指一個 n 位數(n≥3 ),它的每個位上的數字的 n 次冪之和等於它本身(例如:1^3 + 5^3+ 3^3 = 153)

 

 

 

哦哦~ 原來字冪數有這么多的叫法啊。

 

大家知道水仙花數是什么了嗎?

 

黎夢來給大家總結一下:

 

  1. 水仙花數的范圍:大於100,小於但不等於1000

  2. 它的每個位上的數字的 n 次冪之和等於它本身

 

既然我們知道了我們要篩選輸出出來的水仙花數是什么樣的,是不是就可以開始寫程序了呢?

 

答案當然是肯定的!

 

那么問題來了,這個程序應該要怎么寫?

 

首先,根據水仙花數的定義,我們是不是要把它三位數的每一位都取出來,然后取它的3次方,然后把這個三次方相加,檢查總和是否與它本身相等就可以了。

 

其次,我們就該考慮怎么把每一位取出來了,這里有幾個方法。

 

第一種方法:用除法取余的方式,把數字除以10,來取每一位。

 

我們用一個數字135來寫一段分解成三個數字代碼,

 

 

這里涉及到的知識點:

  1. 運算符%,代表的是取余數

  2. 運算符//,代表的是取整

  3. 同一個變量的運算,num=num//10,可以寫為num//=10

 

第二種方法:用字符串的分割的方式,來把數字的每一位取出來

 

同樣是數字135,我們來看看用字符串,要怎么取:

 

 

第二種方法涉及的知識點:

  1. 字符串與數字類型的轉換

  2. 字符串索引取值

 

下面是不是就簡單多了呢?當然,取數字每一位的方法不只這兩種。現在只需要把我們取出來的值,做一個冪的運算,然后再相加做對比就可以得到我們想要得到的水仙花數了!

 

黎明的曙光就在眼前啊!!!(づ ̄3 ̄)づ╭❤~

 

黎夢在這里封裝了一個函數來取每一位的冪運算總和

 

 

 

當然黎夢我寫的這個方法,可以返回不定位數的取冪總和,

 

為什么要這么寫呢,當然是要提高代碼的靈活性Hi~ o(* ̄▽ ̄*)ブ

 

現在,判斷總和的方法已經寫好了,我們來寫調用吧!

 

 

 

好了,我們來運行一下檢驗成果吧!o(*≧▽≦)ツ┏━┓

 

輸出結果:

 

與百度百科中,給出的結果,我們來做一個比對吧!

比對結果顯示我們的程序正確的輸出了所有三位數的水仙花數!

 

來鼓個掌吧👏👏👏

 

現在我們來總結一下涉及到的知識點:

 

  • 運算符%,代表的是取余數

  • 運算符//,代表的是取整

  • 同一個變量的運算,num=num//10,可以寫為num//=10

  • 字符串與數字類型的轉換

  • 字符串索引取值

  • if判斷

  • 列表追加

  • len獲取長度,內建函數

  • 生成隨機數

 

是不是現在也不敢小瞧一個小小的水仙花數了吧!

 

居然有涉及了這么多的知識點(๑•̀ㅂ•́)و✧

 

要不怎么說是經典習題,哦不對,面試題呢!

 

關於水仙花數還有什么問題嗎?

 

有問題聯系黎夢哦~

 
 
 黎夢課堂公眾號成立啦!
 
歡迎大家關注哦
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM