题目解析
要解这道题,首先我们要清楚阿姆斯特朗数是什么意思;阿姆斯特朗数是说如果一个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.12月大促:4核8G5M仅需2090
3.购物车满1000减50:装载购物车