Python實(shí)例練習(xí)水仙花數(shù)問題講解
1. 問題描述
水仙花數(shù)也被稱為超完全數(shù)字不變數(shù)、自戀數(shù)、自冪數(shù)、阿姆斯壯數(shù)或阿姆斯特朗數(shù),水仙花數(shù)是指一個(gè)3位數(shù),它的每個(gè)位上的數(shù)字的3次冪之和等于它本身。
1、水仙花數(shù)是一個(gè)三位數(shù):111 333 456 999 530
2、水仙花數(shù)的個(gè)位、十位、百位的數(shù)字立方和等于原數(shù)

小伙伴們看了問題描述后,一定要自己先練習(xí),再去看博主的代碼和解題思路,才能提高自己的編程水平,全靠自覺喲?。?!
2. 問題分析
怎么獲取個(gè)位、十位、百位上的數(shù)?
- 個(gè)位數(shù)
371 :就是原始數(shù)字對(duì)10進(jìn)行取余的運(yùn)算結(jié)果 371 % 10 = 1
- 十位數(shù)
371:371通過除以10,可以將7移動(dòng)到個(gè)位上去(整數(shù)):371 // 10 = 37
37:37對(duì)10進(jìn)行取余可以得到最后一位的值7 :37 % 10 = 7
- 百位數(shù)
371:3就是原始數(shù)字除以100的結(jié)果(整除):371 // 100 = 3
- 思考:任意數(shù)字的指定位置上的數(shù)值如何求?
123456789:先10000得到12345;再對(duì)10取余得到5
3. 算法思路
1. 使用循環(huán)從100開始到999結(jié)束
2. 每次的循環(huán)體內(nèi),獲取百位數(shù)數(shù)字、十位數(shù)數(shù)字、個(gè)位數(shù)數(shù)字
3. 判斷百位數(shù)數(shù)字三次方加十位數(shù)數(shù)字的三次方加個(gè)位數(shù)數(shù)字的三次方是否等于它本身,如果是就是水仙花數(shù)。
4. 代碼實(shí)現(xiàn)
for循環(huán)代碼實(shí)現(xiàn)
實(shí)現(xiàn)代碼??:
print('100到1000之前的所有水仙花數(shù)如下:')
for i in range(100, 1000):
# 取百位數(shù)字 371 // 100 = 3
x = i // 100
# 取十位數(shù) 371 // 10 =3 7; 37 % 10 = 7
y = i // 10 % 10
# 取個(gè)位數(shù) 371 % 10 = 1
z = i % 10
# 判斷個(gè)位、十位、百位的數(shù)字立方和等于原數(shù)
if x ** 3 + y ** 3 + z ** 3 == i:
print(f'{i}是水仙花數(shù)')
運(yùn)行結(jié)果:

while循環(huán)代碼實(shí)現(xiàn)
實(shí)現(xiàn)代碼:
print('100到1000之前的所有水仙花數(shù)如下:')
number = 100
while number < 1000:
# 取百位數(shù)字 371 // 100 = 3
x = number // 100
# 取十位數(shù) 371 // 10 =3 7; 37 % 10 = 7
y = number // 10 % 10
# 取個(gè)位數(shù) 371 % 10 = 1
z = number % 10
# 判斷個(gè)位、十位、百位的數(shù)字立方和等于原數(shù)
if x ** 3 + y ** 3 + z ** 3 == number:
print(f'{number}是水仙花數(shù)')
# 需要設(shè)置number每次加一
number += 1
運(yùn)行結(jié)果:

到此這篇關(guān)于Python實(shí)例練習(xí)水仙花數(shù)問題講解的文章就介紹到這了,更多相關(guān)Python水仙花數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Django集成富文本編輯器summernote的實(shí)現(xiàn)步驟
在最近的項(xiàng)目中小編使用了這個(gè)富文本編輯器,選擇它的主要原因是配置非常簡(jiǎn)單,默認(rèn)支持普通用戶上傳圖片(不像ckeditor默認(rèn)只有staff user才能上傳圖片。如果要讓普通用戶上傳圖片,還需修改源碼裝飾器)?,F(xiàn)在讓我們來看看如何使用這個(gè)富文本編輯器2021-05-05
Pygame實(shí)戰(zhàn)練習(xí)之推箱子游戲
推箱子想必是很多人童年時(shí)期的經(jīng)典游戲,我們依舊能記得抱個(gè)老人機(jī)娛樂的場(chǎng)景,下面這篇文章主要給大家介紹了關(guān)于如何利用python寫一個(gè)簡(jiǎn)單的推箱子小游戲的相關(guān)資料,需要的朋友可以參考下2021-09-09
Python實(shí)現(xiàn)查找數(shù)組中任意第k大的數(shù)字算法示例
這篇文章主要介紹了Python實(shí)現(xiàn)查找數(shù)組中任意第k大的數(shù)字算法,涉及Python針對(duì)數(shù)組的排序、查找等相關(guān)操作技巧,需要的朋友可以參考下2019-01-01
對(duì)python 多個(gè)分隔符split 的實(shí)例詳解
今天小編就為大家分享一篇對(duì)python 多個(gè)分隔符split 的實(shí)例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12
Python GUI編程之tkinter 關(guān)于 ttkbootstrap 的使用
ttkbootstrap 是一個(gè)基于 tkinter 的界面美化庫,使用這個(gè)工具可以開發(fā)出類似前端 bootstrap 風(fēng)格的 tkinter 桌面程序,這篇文章主要介紹了Python GUI編程之tkinter 關(guān)于 ttkbootstrap 的使用詳解,需要的朋友可以參考下2022-03-03
SpringMVC和SpringBoot接收參數(shù)的幾種方式詳解
這篇文章主要介紹了SpringMVC和SpringBoot接收參數(shù)的幾種方式詳解,Spring是分層的JavaSE/EE應(yīng)用輕量級(jí)開源框架,以IoC和AOP為內(nèi)核,提供了展現(xiàn)層 Spring MVC和持久層Spring JDBC以及業(yè)務(wù)層事務(wù)管理等眾多的企業(yè)級(jí)應(yīng)用技術(shù),需要的朋友可以參考下2023-07-07
Django用戶注冊(cè)并自動(dòng)關(guān)聯(lián)到某數(shù)據(jù)表?xiàng)l目的實(shí)現(xiàn)步驟
當(dāng)一個(gè)新用戶注冊(cè)并且你想要自動(dòng)關(guān)聯(lián)到特定的Box條目(假設(shè)其ID為1)時(shí),下面給大家分享完整實(shí)現(xiàn)流程和步驟,對(duì)Django關(guān)聯(lián)數(shù)據(jù)表?xiàng)l目實(shí)現(xiàn)代碼感興趣的朋友跟隨小編一起看看吧2017-04-04

