本文讲述了python基础编程100例:第48期-快乐的数字!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:
第48期-快乐的数字
1 问题描述
从一个正整数开始,用其每位数的平方之和取代该数,并重复这个过程,
直到最后数字要么收敛等于1且一直等于1,要么将无休止地循环下去且最终不会收敛等于1。
能够最终收敛等于1的数就是快乐的数字。
2 解题思路
第一步: 重复循环,需要使用while True无限循环,到结果为1时结束循环
第二步: 若结果重复出现两次不是一的数,那边会进入死循环,此时就不是快乐的数字
#3 解题方法
x = input('请输入这个数:')
a,m=[x],0
while True:
y = 0
for i in range(len(str(a[m]))):
y += (int(a[m]) // (10 ** i) % 10)**2
if y == 1:
print(True)
break
if y in a:
print(False)
break
a.append(y)
m+=1
第1行: 使用input函数输入一个数并赋值给x
第2行: 定义列表a和变量m,并为之分别赋值
第3行: 无限循环直到遇到break结束循环
第4行: 定义变量y并赋值为0,用于计算各位数平方和
第5-6行: for循环根据数字的长度,判断计算次数,每次都给变量y加上各位数的平方
第7-9行: 判断y是否等于1,若等于1,则输出true并结束循环
第10-12行: 若y不等于1,判断y是否之前出现过,若出现过,则表示会出现循环,不可能会再次等于1,输出false并结束循环
第13行: 上述条件均不满足,则在列表a中添加元素y,判断之后是否会再次出现
第14行: m作为索引,用于抓取列表最后一个元素
代码运行结果为:
更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。
如果你想用Python开辟副业赚钱,但不熟悉爬虫与反爬虫技术,没有接单途径,也缺乏兼职经验
关注下方微信公众号:Python编程学习圈,获取价值999元全套Python入门到进阶的学习资料以及教程,还有Python技术交流群一起交流学习哦。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!