鱼C论坛

 找回密码
 立即注册
查看: 1813|回复: 2

[已解决]请教一下,为什么要这么操作!

[复制链接]
发表于 2022-3-3 16:35:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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
最佳答案
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,不满足循环条件结束循环
  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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,不满足循环条件结束循环
  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-3 16:48:04 | 显示全部楼层
“阿姆斯特朗数: 如果一个正整数等于其各个数字的立方和,则称该数为阿姆斯特朗数(亦称为自恋性数)。 如 407=4^3+0^3+7^3就是一个阿姆斯特朗数。


拿笔和纸带个数进去算算就懂了
比如带个 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循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-29 06:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表