天天看点

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