|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
for i in range(100,1000):
sum = 0
temp = i
while temp:
sum = sum + (temp%10) ** 3
temp //= 10
if sum == i:
print(i)
这个程序里下边这两行什么意思啊?为什么就起到了各位数三次幂之和的效果嘞?
sum = sum + (temp%10) ** 3
temp //= 10
求助大佬~
可以这么理解
- for i in range(100, 1000):
- sum = 0
- temp = i
- while temp: #以下是i=153时候的例子
- sum = sum + (temp%10) ** 3 # 通过temp%10来得到当前判断数字i=153的最后一位数,然后算三次方(3**3)并记录在sum里,现在sum=3**3
- temp //= 10 # 通过小数点前移(除10小数点会向前移动一位),通过抹零‘//’去掉最后一位数,例如153在//后变成15.3,然后抹零变成15,(换行)
- # 这样数字temp=153的最后一位就从153的3变成了15的5,方便循环下一步get到抹零之后的最后一位数字
- # 循环回到sum那行,这回temp的最后一位变成了5,通过temp%10得到5之后计算5**3再与之前的3**3叠加,现在sum=3**3 + 5**3
- #然后temp//=10抹零得到1(只剩一位了),最后循环一次sum,刚才两次的sum值(3**3 + 5**3)在叠加上1**3,现在sum=1**3+3**3+5**3
- if sum == i: #sum=153之后在和原值i=153进行比对
- print(i) #比对成功,打印153
复制代码
楼主如仍有疑问,欢迎追问
由于我也是刚学完这块不久,如有错误也欢迎大佬们指正
PLUS:小数点位移大法好
|
|