# 如果是快乐数,那么只需要不断地循环生成total(各位数的和),直到total=1 ,return True# 重点是解决不是快乐数的情况,此时各位数的平方和永远都不等于1,所以要用一个集合,每次计算出一个平方和要检查集合里是否有相同的数字,如果有,不是快乐数,return Falsedefis_happy(num):
temp =set()while num notin temp:
total =0
temp.add(num)# total = sum([int(x) ** 2 for x in str(num)])while num >0:
total +=(num %10)**2
num = num //10if total ==1:returnTrue
num = total
returnFalse# print(is_happy(1003))# print(is_happy(1002))