Python习题练习4-水鲜花数

题目:输出水仙花数(水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153))

for i in range (1,10):     #设置i的取值范围为 1-9
    for j in range (0,10):   #设置j的取值范围为0-9
        for k in range (0,10):  #设置k的取值范围为0-9
            if i*100+j*10+k == i**3+j**3+k**3:   #判断i乘100+j乘10+k是否等于i的3次幂+j的3次幂+k的3次幂  如果相等则走到子代码中
                print("水仙花数有:%s"%(i*100+j*10+k))   打印i乘100+j乘10+k的值  打印结果为:
水仙花数有:153
水仙花数有:370
水仙花数有:371
水仙花数有:407

解题思路:定义一个三位数 ijk(i为百位,j为十位,k为个位),所以i乘100+j乘10+k就是一个三位数,然后使整个三位数等于i的三次幂+j的三次幂+k的三次幂就行,这时候我们就可以用遍历去一组数一组数的计算,符合结果的就打印出来。

 整理下这个题目for循环的大致流程:

当i等于1时,代码走到了下面的j的for循环,此时i=1 j=0  然后再走到下面k的for循环中,此时 i =1 j=0 k=0然后去进行if判断,100不符合结果,然后回到k的for循环中,继续k的for循环,此时 i=1 j=0 k=1,然后if判断不符合,继续进行k的for循环,直到i=1 j=0 k=9 发现k的for循环都走完了,此时再返回到j的for循环中,得到i =1 j=1 ,然后继续进入到下面k的for循环中,此时i=1 j=1 k=0,然后继续进行直到i=1,j=1,k=9 ,再返回到j的for循环中,此时i=1 j=2然后进入到下面k的for循环,此时i=1 j=2 k=0,就这么一直遍历,直到 i=1 j=9 k=9后,返回到i的for循环中,此时 i=2,然后进入再到下面j的循环 i=2 j=0然后走到下面k的循环中此时i=2 j=0 k=0,就这么一直遍历下去,最后直到i=9 j=9 k=9,发现所有的数字都遍历过一遍了,结束for循环遍历。这样就能吧100-999所有的数都尝试一遍,然后把符合水仙花的数打印出来。

简单梳理下就是:首先当i=1时,因为子代码有j的遍历,所以首先从j=0开始,然后j下面还有k的遍历,所以当从k=0到k=9都遍历完后,再回到j的遍历中继续进行j的遍历,然后就该进行j=1时,k的从0到9的遍历,然后再回到j,直到j=9并且进行完j=9时k的从0到9的遍历,再回到i的遍历上,进行i=2,然后又回到了j的遍历,然后再进行j和k的从0到9的遍历,结束后再回到i的遍历上,直到i=9时,j和k的0到9遍历完,结束循环。如果一步一步打印就是从100按顺序打印到999.


 下图为公众号二维码,内容会同步发出,大家可以关注一起学习

                                                                                               

这个是张狗子小哥哥的公众号,会分享一些平时的工作心得,可以关注看下。

                                                                                                

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘阿童木

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值