|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 Lambertliu 于 2018-9-6 23:53 编辑
for i in range(100, 1000):
sum = 0
temp = i
while temp:
sum = sum + (temp%10) ** 3
temp //= 10
if sum == i:
print(i)
特别是
这段
while temp:
sum = sum + (temp%10) ** 3
temp //= 10
这段代码是解释水仙花数的,建议你论坛内搜一搜很多答案,附上一条大神的回答。 - while temp:
- sum = sum + (temp%10)**3
- temp = temp // 10
- 这段代码的作用,举例: temp 取值153,sum 的值为0,
- 第1次循环:
- sum = sum + (temp%10)**3 # sum = 0+(3)**3
- temp = temp // 10 # temp = 153//10 = 15
- 第2次循环:(此时,sum = 27,temp=15)
- sum = sum + (temp%10)**3 # sum = 27+(5)**3
- temp = temp // 10 # temp = 15//10 = 1
- 第3次循环: (此时,sum=152,temp=1)
- sum = sum + (temp%10)**3 # sum = 152+(1%10)**3=152+(1)**3=153
- temp = temp // 10 # temp = 1//10 = 0
- 第4次循环: (此时,sum=153,temp =0),注意,while temp: 等于 while 0:
- 0即是False,不再执行循环体。
- 总结: sum = sum +(temp%10)**3,这个式子是为了累积 以 temp为变量的值,每执行一次循环,累计一次,而 temp%10(取余,除以10,就是取末尾的数字),目标是把temp里的每一个数字都分别取出来;
- temp = temp // 10,这个式子,是给sum = sum +(temp%10)**3, 提供可取余数的被除数。
复制代码
以上内容来自此链接的最佳答案 https://fishc.com.cn/forum.php?m ... =%CB%AE%CF%C9%BB%A8
|
|