#水仙花數 num=int(input('請輸入任意範圍,將會獲得其範圍內的全部水仙花數:')) for i in range(1,num+1): cifang = len(str(i)) #這個數的位數,即爲次方數 total = 0 #各位數N次方之和 j = i #由於後面i會用作比較,因此我不更改i的值 last_w = 0 #這個數的最後一位數 while j > 0 and cifang > 2: last_w = j % 10 #對10求餘,表示這個數的最後一個數 j = j // 10 #去掉最後一位數 total += last_w ** cifang #計算各位的N次方之和 if total == i: #若是各位數的N次方以後與原數i相等,就打印 print(i)