题目如下:
如果一个n位正整数等于其各位数字的n次方之和,则称该数为阿姆斯特朗数。 例如1^3 + 5^3 + 3^3 = 153。
1000以内的阿姆斯特朗数: 1, 2, 3, 4, 5, 6, 7, 8, 9, 153, 370, 371, 407。
本章通过两种循环语句对该案例进行分析,首先仅使用for循环,代码如下:
for i in range(10000):
sums = 0 #初始化sums
n = 0
s = str(i)
n = len(s) #n赋值i的长度,作为后续计算的幂
#for循环遍历字符串
for a in s:
b = int(a)
sums += b**n
#s的每一位被遍历
if sums == i:
print(sums)
接下来使用while循环来实现,通过while循环和取模以及取整除的运算符结合来实现功能,代码如下:
for num in range(1000):
# 初始化 sum
sum = 0
# 指数
n = len(str(num))
# 检测
temp = num
while temp > 0:
digit = temp % 10 #取模,X%10,取X的个位数
sum += digit ** n
temp //= 10 #取余,X//10,取X除了个位数的其他数
if num == sum:
print(num)