描述
编写一个算法来确定一个数字是否“快乐”。 快乐的数字按照如下方式确定:从一个正整数开始,用其每位数的平方之和取代该数,并重复这个过程,直到最后数字要么收敛等于1且一直等于1,要么将无休止地循环下去且最终不会收敛等于1。能够最终收敛等于1的数就是快乐的数字。
例如: 19 就是一个快乐的数字,计算过程如下:
- 1 + 9 = 82
- 8 + 2 = 68
- 6 + 8 = 100
- 1 + 0 + 0 = 1
当输入时快乐的数字时,输出True,否则输出False。
输入
示例1:19
输出
示例1:True
代码如下:
#快乐的数字 def getSumofSquares(num): numStr=str(num) #将待计算的数字转换成字符串类型 sum=0 digitls=[int(x) for x in numStr] #从字符串中提取出每一位数字存入一个列表 #注:该步略显多余,因为python中字符串可以和列表一样切片取值或循环,见下方更新部分 #print(digitls) for i in digitls: sum += i**2 return sum def main(): n = input() #输入一个正整数 sumofSqrs = eval(n) count = 0 while sumofSqrs != 1: sumofSqrs = getSumofSquares(sumofSqrs) count += 1 if count > 2000: #当计算次数超过2000次时,跳出循环结束计算 print("False") break else: print("True") main()
注:本题目来自python123,链接:https://python123.io/student/courses/1081/groups/9686/problems/programmings/675