美文网首页
Python基础练习之一输出10000以内的阿姆斯特朗数

Python基础练习之一输出10000以内的阿姆斯特朗数

作者: windy1001 | 来源:发表于2018-11-02 18:10 被阅读0次

    题目解析

    要解这道题,首先我们要清楚阿姆斯特朗数是什么意思;阿姆斯特朗数是说如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。比如13 + 53 + 33 = 153,14+64+34+44=1634

    解题思路

    1.利用for循环遍历1-10000
    2.根据常识,1-9都是阿姆斯特朗数,直接输出即可
    3.判断位数,进行数字拆分,使用除法和取余运算,得到各个位数上的数字
    4.进行运算和判断

    代码展示

    #!/usr/bin/python3
    #-*- coding:UTF-8 -*-
    
    print("10000以内的阿姆斯特朗数有:")
    for number in range(1, 10001):
        if  number < 10: #1-9都为阿姆斯特朗数,直接输出即可
            print(number)
        elif number < 100:
            n1 = number % 10 #取个位数
            n2 = int(number/10 % 10) #取十位数
            result = n1**2 + n2**2
            if number == result:
                print(number)
        elif number < 1000:
            n1 = number % 10
            n2 = int(number/10 % 10)
            n3 = int(number/100 % 10) #取千位数
            result = n1**3 + n2**3 + n3**3
            if number == result:
                print(number)
        elif number < 10000:
            n1 = number % 10
            n2 = int(number/10 % 10)
            n3 = int(number/100 % 10)
            n4 = int(number/1000 % 10) #取万位数
            result = n1**4 + n2**4 + n3**4 + n4**4 #各位数进行次方运算
            if number == result:
                print(number)
    

    执行结果如下:


    运行结果

    最后总结

    练习总结

    1.练习for循环的运用
    2.if的用法
    3.取数字各位数上的数字

    改进思考

    1.在分解数字的时候,可以使用//进行整除,这样就不用再使用int函数转换了
    2.在判断数字位数的时候,是否还有另外的办法,比如直接对5位数进行分解,然后从高位开始判断,知道某一位不等于0,即可判断数字位数,比如00124的时候,即3位数。

    阿里云时间

    1.1888代金券,长期有效:1888
    2.双十一组团,10.30-11.13有效:11.11
    3.购物车满1000减50:装载购物车

    相关文章

      网友评论

          本文标题:Python基础练习之一输出10000以内的阿姆斯特朗数

          本文链接:https://www.haomeiwen.com/subject/mtitxqtx.html