python学习知识点补充-----用python编写寻找水仙花数的程序

寻找水仙花数,要求:寻找出在100到1000范围内的左右水仙花数。
PS:如果一个3位数等于其各位数字的立方和,则这个数被称为水仙花数。例如153=1^3+5^3+3^,因此153是一个水仙花数。
详细的解释和思路都在注释中,如有纰漏或不足之处,希望大家不吝赐教。

def Find(x1, x2):
    list2 = []               #list2为存放所有水仙花数的列表,此处为初始化。另由于list2在最后要输出,所以应为全局变量
    for a in range(x1, x2):  #大循环,循环范围即需要查找水仙花数的范围
        CopyNum = a          #CopyNum是用来和result(即每位数的立方和)做比较的。相同即是水仙花数。由于a在循环中会发生变化,所以在循环外先复制了a,以便在循环结束后能与result比较。   
        list1 = []           #list1为存放每一位数字的列表,在循环结束后就没啥用了,所以定义成了局部变量。这里是初始化。
        while a>10:          #当a>10时,说明该数还没有除到个位上,应继续循环。
            b = a % 10       #除10取余,b是最低位的那个数
            a = a // 10      #除10取商(向下取整),a是把最低位摘掉后剩下的数
            list1.append(b)  #把每次除出来的数放到list1中,这样就实现了把多位数拆成单独的数字的功能
        list1.append(a)      #别忘了除到最后a<10时,a为原来的最高位,也要放到list1中,不然拆开的数会缺最高位
        list1.reverse()      #列表中的数是由最低位排到最高位的,这里翻转,由最高位排到最低位,符合正常的阅读习惯
        result = 0           #result为各位数的立方和,这里先把它初始化。循环外用不到result,所以定义成局部变量就行。
        for x in list1:      #遍历list1,即一个数的每一位数,进行立方和运算
            result = result + x**3
        if result == CopyNum:              #如果立方和result等于最开始输入的a(CopyNum是a的副本),则为水仙花数。
            list2.append(result)           #把水仙花数放入list2中
    print('该范围内共有%d个水仙花数,分别为:' %len(list2))
    print(list2)                           #输出所有水仙花数
    
Find(100, 100000)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值