前幾天,學完python的數值類型之后,老師留了幾道練習題,里面就有三位水仙花數的計算這道題。雖然難度不大,但的確很有趣。下面是對於這道題我的答案,答案已通過驗證。
三位水仙花數的計算
描述
“3位水仙花數”是指一個三位整數,其各位數字的3次方和等於該數本身。例如:ABC是一個“3位水仙花數”,則:A的3次方+B的3次方+C的3次方 = ABC。
請按照從小到大的順序輸出所有的3位水仙花數,請用一個“逗號+空格”分隔輸出結果。
思路:剛開始看到這道題,我就想到了必須把這個三位數的個位、十位和百位分開。那怎么分開呢?這里我們可以用python的取余符號%和取整除符號//這兩個符號進行。比如一個三位數123,123//100可以得到百位數1,123%10=3這是個位數,十位數需要計算兩次,123//10%10就可以得到十位數2了。
計算過程有了,但提交還是不對,哪地方錯了呢?仔細看了下題,原來這道題的輸出結果要求是“逗號+空格”,這個不怎么好實現,還好這里我用了列表里的函數操作,最終代碼提交成功。str.join(i),在變量i除最后一個元素外加str
下面是我的代碼:
1 f=[]#定義了一個列表 2 for i in range(100,1000): 3 a=i//100 #百位數 4 b=i//10%10 5 c=i%10 6 if a**3+b**3+c**3 == i: 7 f.append(i) 8 print(', '.join(str(i) for i in f))