请教一下,为什么要这么操作!
num = int(input("请输入一个数字: "))sum = 0
n = len(str(num))
temp = num
while temp > 0:
digit = temp % 10
sum += digit ** n
temp //= 10
if num == sum:
print(num,"是阿姆斯特朗数")
else:
print(num,"不是阿姆斯特朗数")
这一段为什么这么操作?
temp = num
while temp > 0:
digit = temp % 10
sum += digit ** n
temp //= 10 本帖最后由 isdkz 于 2022-3-3 16:48 编辑
temp = num #因为直接操作num的话会改变num,后面就无法跟原来的数比较了,所以用一个临时变量temp来操作
while temp > 0:
digit = temp % 10 # 模10可以得到最后一位数
sum += digit ** n # 统计每一位数的 数字的长度 次方之和
temp //= 10 # 地板除法抛弃最后一位,使得倒数第二位成为最后一位,直到只剩一位后,地板除法会得到 0,不满足循环条件结束循环 “阿姆斯特朗数: 如果一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数(亦称为自恋性数)。 如 407=4^3+0^3+7^3就是一个阿姆斯特朗数。
拿笔和纸带个数进去算算就懂了{:10_245:}
比如带个 temp =407
第一轮结束 digit = 7; sum= 7^3 = 343 ; temp = 40
第一轮结束 digit = 0; sum= 7^3 + 0^3 = 343 ; temp = 4
第一轮结束 digit = 4; sum= 7^3 + 4^3= 407 ; temp = 0 跳出while循环
页:
[1]