天天看點

python程式填空題 快樂的數字_Python習題之快樂的數字

快樂的數字

描述

編寫一個算法來确定一個數字是否“快樂”。 快樂的數字按照如下方式确定:從一個正整數開始,用其每位數的平方之和取代該數,并重複這個過程,直到最後數字要麼收斂等于1且一直等于1,要麼将無休止地循環下去且最終不會收斂等于1。能夠最終收斂等于1的數就是快樂的數字。????????????????????????????????????????????????????????????????????????????????????????????????

例如: 19 就是一個快樂的數字,計算過程如下:????????????????????????????????????????????????????????????????????????????????????????????????

12 + 92 = 82

82 + 22 = 68

62 + 82 = 100

12 + 02 + 02 = 1

當輸入時快樂的數字時,輸出True,否則輸出False。

示例

輸入:19   輸出:True

題幹分析

首先,我們需要得到一個數字,判斷它是幾位數,然後分别取它的每一位數,平方再相加,如此循環下去,直到最後結果為1,輸出True,否則,輸出False。

那麼,如果一個數字不是快樂數,它會不會無限循環下去呢?我們可以找幾個數字來試一試。

2:2**2=4;4**2=16;1**2+6**2=37;3**2+7**2=58;5**2+8**2=89;8**2+9**2=145;1**2+4**2+5**2=42;4**2+2**2=20;2**2+0**2=4......

21:2**2+1**2=5;5**2=25;2**2+5**2=29;2**2+9**2=85;8**2+5**2=89;8**2+9**2=145;1**2+4**2+5**2=42;4**2+2**2=20;2**2+0**2=4......

35:3**2+5**2=34;3**2+4**2=25;5**2=25;2**2+5**2=29;2**2+9**2=85;8**2+5**2=89;8**2+9**2=145;1**2+4**2+5**2=42;4**2+2**2=20;2**2+0**2=4......

57:5**2+7**2=74;7**2+4**2=65;6**2+5**2=61;6**2+1**2=37;3**2+7**2=58;5**2+8**2=89;8**2+9**2=145;1**2+4**2+5**2=42;4**2+2**2=20;2**2+0**2=4......

123:1**2+2**2+3**2=14;1**2+4**2=17;1**2+7**2=50;5**2+0**2=25;2**2+5**2=29;2**2+9**2=85;8**2+5**2=89;8**2+9**2=145;1**2+4**2+5**2=42;4**2+2**2=20;2**2+0**2=4......

91:9**2+1**2=82;8**2+2**2=68;6**2+8**2=100;1**2+0**2+0**2=1

由此,我們可以看出,如果是快樂數,那麼最後計算的值為1;而不是快樂數,最後計算的結果一定有4。是以可以限定循環的判斷條件為1和4,即當和為1或4時跳出循環,以此來防止無限循環。

代碼及運作結果展示

函數方法

python程式填空題 快樂的數字_Python習題之快樂的數字

運作結果

python程式填空題 快樂的數字_Python習題之快樂的數字
python程式填空題 快樂的數字_Python習題之快樂的數字

異常處理方法

python程式填空題 快樂的數字_Python習題之快樂的數字

運作結果

python程式填空題 快樂的數字_Python習題之快樂的數字
python程式填空題 快樂的數字_Python習題之快樂的數字

這是我目前想到的兩種方法,如果大家還有别的方法,歡迎跟我一起探讨!

原文:https://www.cnblogs.com/Chen-K/p/11598021.html