2016-10-04 43 views
0

今天我看到一個有趣的任務。製作一個輸出所有「自戀數字」的程序(所有數字都提高到3的冪)。我的程序有這個代碼自戀號碼

for number in range(1, 408): 
    result = 0 
    for digit in str(number): 
     result += int(digit) ** 3 
     if result == number: 
      print(number) 

輸出是

1 
153 
370 
370 
371 
407 

爲什麼370會出現兩次?

回答

0

您應該取消縮進最後if聲明,每個數字後運行:

for number in range(1, 408): 
    result = 0 
    for digit in str(number): 
     result += int(digit) ** 3 
    if result == number: 
     print(number) 

作爲另一個答案的筆記,這可以給你假的副本,如果有匹配的數量尾隨0。如果有一個數字的左邊的X位數等於它,但其總位數沒有,則存在誤報的附加危險。

0

您正在檢查數字中每個數字後的result==number。您可能需要在外部for循環中進行此項檢查。實際上,它看到370 = 3 ** 3 + 7 ** 3,但它也是3 ** 3 + 7 ** 3 + 0 ** 3,所以它在這兩次迭代中都被打印出來。