四位玫瑰数问题的解决

本文介绍了如何使用Python找出所有四位的玫瑰数,即4位数的自幂数。通过遍历和循环结构,以及分支结构两种方式实现,强调了第二种使用分支结构的简洁性,并分享了编程思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在中国大学慕课上面·遇到了这个题目。

                                            ***题目描述***:
  • 四位玫瑰数是4位数的自幂数。自幂数是指一个 n 位数,它的每个位上的数字的 n 次幂之和等于它本身。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

例如:当n为3时,有1^3 + 5^3 + 3^3 = 153,153即是n为3时的一个自幂数,3位数的自幂数被称为水仙花数。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬

请输出所有4位数的四位玫瑰数,按照从小到大顺序,每个数字一行

**
在论坛上面也看到有相关程序算法,做题的时候脑袋比较蒙,还有时间限制,所以就直接套用别人的成果完成题目了(强烈不建议这样做),做完后自己花时间琢磨了一下,先把自己写的程序贴出来,一是记录,以后能看,二是分享,以偿还自己偷别的博主代码。。。。

**

  • 程序代码*

**#计算玫瑰数字

  • for i in range(1000,10000):
    while pow(eval(str(i)[0]),4) + pow(eval(str(i)[1]),4) +
    pow(eval(str(i)[2]),4) + pow(eval(str(i)[3]),4) == i:
    print(i)
    break**

**
**设计思想是遍历所有四位数,对其进行计算以判断是否符合玫瑰数类型,采用保留字while无限循环方式对i进行条件判断,如果符合条件,则执行语句块“print(i)”,用保留字break打破内循环,最后能输出正确结果。

  •                          **思考与改进**
    

    上面的代码是用遍历和循环结构组合而成的,考虑一下,这里用分支结构实现算法更简洁,采用保留字if:

  • #玫瑰数参考程序2

  • for i in range(1000,10000):
    if pow(eval(str(i)[0]),4) + pow(eval(str(i)[1]),4) +
    pow(eval(str(i)[2]),4) + pow(eval(str(i)[3]),4) == i:
    print(i)

                               **总结**
    

    两种程序算法都能解决需求,究竟哪种更好,个人倾向于第二种,即采用分支结构的那一种,因为对我而言,更容易接受和理解。我想,能够运用程序的分支结构解决需求,这也是嵩天老师团队设计本题目的目的所在吧。

  •                             **申明**
    

    本题目来源于python123平台、嵩天老师开设的python课程练习题目,本人仅作记录和分享经验之谈,不用作任何商业有关活动,侵权立删。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值