xc02570 发表于 2022-3-3 16:35:39

请教一下,为什么要这么操作!

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:43:00

本帖最后由 isdkz 于 2022-3-3 16:48 编辑

temp = num   #因为直接操作num的话会改变num,后面就无法跟原来的数比较了,所以用一个临时变量temp来操作
while temp > 0:
   digit = temp % 10   # 模10可以得到最后一位数
   sum += digit ** n    # 统计每一位数的 数字的长度 次方之和
   temp //= 10   # 地板除法抛弃最后一位,使得倒数第二位成为最后一位,直到只剩一位后,地板除法会得到 0,不满足循环条件结束循环

大马强 发表于 2022-3-3 16:48:04

“阿姆斯特朗数: 如果一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数(亦称为自恋性数)。 如 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]
查看完整版本: 请教一下,为什么要这么操作!