DAY 010 水仙花數for迴圈應用

2022-05-04 12:12:14 字數 1721 閱讀 1132

010問題:

什麼是水仙花數?水仙花數是指乙個 n 位正整數 ( n≥3 ),它的每個位上的數字的 n 次冪之和等於它本身。(例如:1^3 + 5^3+ 3^3 = 153)。

要求:列印輸出所有的三位數"水仙花數"。

流程分析:

思路1:

1、設定範圍:三位數的水仙花i,將i從100到999之間迴圈找書

2、由於i是整數,將i轉為字串,然後將i的百位數、十位數、個位數(x,y,z)分別取出並再次轉換為整數

3、設定條件:

if pow(x,3)+pow(y,3)+pow(z,3)==i

4、如果條件滿足就列印i

思路2:

1、現將這三位數的百位i、十位j、個位k分別從(1,9)、(0,9)、(0,9)這三個範圍中列舉

2、判定條件:

if pow(i,3)+pow(j,3)+pow(k,3)==i*100+j*10+k

3、如果條件滿足就列印ijk

**分析:

**1

for i in range(100,1000):

x,y,z=map(int,str(i))

if pow(x,3)+pow(y,3)+pow(z,3)==i:

print

(i)#

輸出結果

153370

371407

思路1**2

for i in range(1,10):

for j in range(10):

for k in range(10):

if i**3+j**3+k**3==i*100+j*10+k:

print

(i,j,k)

#輸出結果

1 5 3

3 70

3 7 1

4 0 7

思路2題目反思:

1、思路1需要注意如和將整數轉為字串,因為字串是有順序的,然後再轉為整數,用到的map函式

2、思路2和列舉法很相似,冪次方也可以用pow函式來代替

新學知識點:

1、一道題的兩種不一樣的思路,思路1是我想出來的,思路2是題目的標準答案,我的思路可能轉換起來比較麻煩,標準**一目了然

2、pow有兩種用法

import

math

math.pow( x, y )

pow(x,y[,x])
函式是計算x的y次方,如果z在存在,則再對結果進行取模,其結果等效於pow(x,y) %z

注意:

pow() 通過內建的方法直接呼叫,內建方法會把引數作為整型,而 math 模組則會把引數轉換為 float。

3、map(function, iterable, ...)

map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])

#相當於

[3, 7, 11, 15, 19]

mark on 2018.04.13

迴圈 11 水仙花數 20

水仙花數是指乙個n位正整數 n 3 它的每個位上的數字的n次冪之和等於它本身。例 如 153 13 53 33。本題要求編寫程式,計算所有n位水仙花數。輸入格式 輸入在一行中給出乙個正整數n 3 n 7 輸出格式 按遞增順序輸出所有n位水仙花數,每個數字佔一行。輸入樣例 3輸出樣例 153 3703...

迴圈 11 水仙花數 20

水仙花數是指乙個n位正整數 n 3 它的每個位上的數字的n次冪之和等於它本身。例 如 153 13 53 33。本題要求編寫程式,計算所有n位水仙花數。輸入格式 輸入在一行中給出乙個正整數n 3 n 7 輸出格式 按遞增順序輸出所有n位水仙花數,每個數字佔一行。輸入樣例 3輸出樣例 153 3703...

求水仙花 ghpython 水仙花數02

今天咱們繼續來看看老潘微博裡的乙個python小案例,求水仙花數,這個小案例在前兩天已經分享了,今天分享另一種方法,常言道只要思想不滑坡,方法總比困難多,而且今天的方法個人覺得更pythonic一點。水仙花數 四葉玫瑰數 五角星數 由於2位數的自冪數不存在,這裡直接從100遍歷到100000 for...