今天,給大家分享一個習題。
用python輸出100到1000以內的水仙花數。
相信很多小伙伴都聽到過,或者遇到過這個題目。
那么今天就來帶大家做一做這道題。
首先,我們要知道什么是水仙花數,
(@_@;)水仙花數是什么,我真的不知道啊???
讓我們來百度一下(內容來自百度百科)。
水仙花數(Narcissistic number)也被稱為超完全數字不變數(pluperfect digital invariant, PPDI)、自戀數、自冪數、阿姆斯壯數或阿姆斯特朗數(Armstrong number),水仙花數是指一個 n 位數(n≥3 ),它的每個位上的數字的 n 次冪之和等於它本身(例如:1^3 + 5^3+ 3^3 = 153)
哦哦~ 原來字冪數有這么多的叫法啊。
大家知道水仙花數是什么了嗎?
黎夢來給大家總結一下:
-
水仙花數的范圍:大於100,小於但不等於1000
-
它的每個位上的數字的 n 次冪之和等於它本身
既然我們知道了我們要篩選輸出出來的水仙花數是什么樣的,是不是就可以開始寫程序了呢?
答案當然是肯定的!
那么問題來了,這個程序應該要怎么寫?
首先,根據水仙花數的定義,我們是不是要把它三位數的每一位都取出來,然后取它的3次方,然后把這個三次方相加,檢查總和是否與它本身相等就可以了。
其次,我們就該考慮怎么把每一位取出來了,這里有幾個方法。
第一種方法:用除法取余的方式,把數字除以10,來取每一位。
我們用一個數字135來寫一段分解成三個數字代碼,
這里涉及到的知識點:
-
運算符%,代表的是取余數
-
運算符//,代表的是取整
-
同一個變量的運算,num=num//10,可以寫為num//=10
第二種方法:用字符串的分割的方式,來把數字的每一位取出來
同樣是數字135,我們來看看用字符串,要怎么取:
第二種方法涉及的知識點:
-
字符串與數字類型的轉換
-
字符串索引取值
下面是不是就簡單多了呢?當然,取數字每一位的方法不只這兩種。現在只需要把我們取出來的值,做一個冪的運算,然后再相加做對比就可以得到我們想要得到的水仙花數了!
黎明的曙光就在眼前啊!!!(づ ̄3 ̄)づ╭❤~
黎夢在這里封裝了一個函數來取每一位的冪運算總和
當然黎夢我寫的這個方法,可以返回不定位數的取冪總和,
為什么要這么寫呢,當然是要提高代碼的靈活性Hi~ o(* ̄▽ ̄*)ブ
現在,判斷總和的方法已經寫好了,我們來寫調用吧!
好了,我們來運行一下檢驗成果吧!o(*≧▽≦)ツ┏━┓
輸出結果:
與百度百科中,給出的結果,我們來做一個比對吧!
比對結果顯示我們的程序正確的輸出了所有三位數的水仙花數!
來鼓個掌吧👏👏👏
現在我們來總結一下涉及到的知識點:
-
運算符%,代表的是取余數
-
運算符//,代表的是取整
-
同一個變量的運算,num=num//10,可以寫為num//=10
-
字符串與數字類型的轉換
-
字符串索引取值
-
if判斷
-
列表追加
-
len獲取長度,內建函數
-
生成隨機數
是不是現在也不敢小瞧一個小小的水仙花數了吧!
居然有涉及了這么多的知識點(๑•̀ㅂ•́)و✧
要不怎么說是經典習題,哦不對,面試題呢!
關於水仙花數還有什么問題嗎?
有問題聯系黎夢哦~
