Python實例練習水仙花數問題講解
1. 問題描述
水仙花數也被稱為超完全數字不變數、自戀數、自冪數、阿姆斯壯數或阿姆斯特朗數,水仙花數是指一個3位數,它的每個位上的數字的3次冪之和等于它本身。
1、水仙花數是一個三位數:111 333 456 999 530
2、水仙花數的個位、十位、百位的數字立方和等于原數
小伙伴們看了問題描述后,一定要自己先練習,再去看博主的代碼和解題思路,才能提高自己的編程水平,全靠自覺喲?。?!
2. 問題分析
怎么獲取個位、十位、百位上的數?
- 個位數
371 :就是原始數字對10進行取余的運算結果 371 % 10 = 1
- 十位數
371:371通過除以10,可以將7移動到個位上去(整數):371 // 10 = 37
37:37對10進行取余可以得到最后一位的值7 :37 % 10 = 7
- 百位數
371:3就是原始數字除以100的結果(整除):371 // 100 = 3
- 思考:任意數字的指定位置上的數值如何求?
123456789:先10000得到12345;再對10取余得到5
3. 算法思路
1. 使用循環(huán)從100開始到999結束
2. 每次的循環(huán)體內,獲取百位數數字、十位數數字、個位數數字
3. 判斷百位數數字三次方加十位數數字的三次方加個位數數字的三次方是否等于它本身,如果是就是水仙花數。
4. 代碼實現
for循環(huán)代碼實現
實現代碼??:
print('100到1000之前的所有水仙花數如下:') for i in range(100, 1000): # 取百位數字 371 // 100 = 3 x = i // 100 # 取十位數 371 // 10 =3 7; 37 % 10 = 7 y = i // 10 % 10 # 取個位數 371 % 10 = 1 z = i % 10 # 判斷個位、十位、百位的數字立方和等于原數 if x ** 3 + y ** 3 + z ** 3 == i: print(f'{i}是水仙花數')
運行結果:
while循環(huán)代碼實現
實現代碼:
print('100到1000之前的所有水仙花數如下:') number = 100 while number < 1000: # 取百位數字 371 // 100 = 3 x = number // 100 # 取十位數 371 // 10 =3 7; 37 % 10 = 7 y = number // 10 % 10 # 取個位數 371 % 10 = 1 z = number % 10 # 判斷個位、十位、百位的數字立方和等于原數 if x ** 3 + y ** 3 + z ** 3 == number: print(f'{number}是水仙花數') # 需要設置number每次加一 number += 1
運行結果:
到此這篇關于Python實例練習水仙花數問題講解的文章就介紹到這了,更多相關Python水仙花數內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Windows環(huán)境下python環(huán)境安裝使用圖文教程
這篇文章主要為大家詳細介紹了Windows環(huán)境下python安裝使用圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03python中如何正確使用正則表達式的詳細模式(Verbose mode expression)
許多程序設計語言都支持利用正則表達式進行字符串操作,python自然也不例外,下面這篇文章主要給大家介紹了關于在python中如何正確使用正則表達式的詳細模式(Verbose mode expression)的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-11-11關于Django框架的關系模型序列化和一對多關系中的序列化解析
序列化的意思是把字典的形式轉化成Json格式。當我們展示數據的時候需要使用,反序列化的話,就是Json轉成字典形式,存儲數據時候使用,需要的朋友可以參考下2023-05-05使用python Telnet遠程登錄執(zhí)行程序的方法
今天小編就為大家分享一篇使用python Telnet遠程登錄執(zhí)行程序的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01