题目解析

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

解题思路

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

代码展示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/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:装载购物车

× 请我吃糖~
打赏二维码