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

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

题目解析

要解这道题,首先我们要清楚阿姆斯特朗数是什么意思;阿姆斯特朗数是说如果一个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:装载购物车

posted @ 2018-10-30 23:52  微凉w  阅读(1352)  评论(0编辑  收藏
个人Blog:薇小站