Python课后练习009
for i in range(100, 1000):sum = 0
temp = i
while temp:
sum = sum + (temp%10) ** 3
temp //= 10 # 注意这里要使用地板除哦~
if sum == i:
print(i)
为什么要把这里的i的值重新赋给temp,不重新赋值的话为什么程序运行不了?
num = 100
while True :
thesum = 0
temp = num
while temp :
thesum = thesum + (temp % 10)**3
temp //= 10
if thesum == num :
print (num,end = " ")
num += 1
else :
num += 1
if num == 1000 :
break
换成while的话这里的num如果不重新赋值给temp也会无限循环,为什么? 本帖最后由 Twilight6 于 2020-5-3 23:35 编辑
看这代码应该是水仙花数吧。
for i in range(100, 1000):
sum = 0
temp = i# 因为水仙花数是要满足各位位数上的三次方的和等于它本身,所以这里要重新赋值
while temp:
sum = sum + (temp%10) ** 3
temp //= 10 # 因为没有重新赋值的话 i 就会除以十后 改变了值
if sum == i: # 导致这边无法判断是不是等于本身
print(i)
第二个代码也是同样的道理:
num = 100
while True :
thesum = 0
temp = num # 要先拿一个临时变量,拿去运算而不改变本身的值,因为本身后面还需要判断是否相等
while temp :
thesum = thesum + (temp % 10)**3
temp //= 10# 就是这,临时变量的值会发生改变
if thesum == num :# 如果你没用临时变量,会导致后面无法判断是否与本身相等
print (num,end = " ")
num += 1
else :
num += 1
if num == 1000 :
break Twilight6 发表于 2020-5-3 23:29
看这代码应该是水仙花数吧。
第二个代码也是同样的道理:
原来是这样,感谢大佬😬😬😬
页:
[1]