但我尝试把temp赋值为临时变量,并将temp限定在range(100,1000)中
print temp之后却出现很多不符合规则的数,这是为什么呢,有木有老哥可以帮忙看看?
代码如下:
for a in range(0,10):
for b in range(0,10):
for c in range(0,10):
temp = a*100 +b*10 +c
for temp in range(100,1000):
if a**3 +b**3+c**3 == temp:
print(temp)
刚开始看到这个题目的时候,感觉像是把30+课程的题目搬到这里来了,真真的是一脸的蒙啊,现在稍微理解点了,也放出来跟大伙分享下:
while temp:
sum = sum + (temp%10) ** 3
temp //= 10
这两句的while循环就相当于把已给定数字,从个位一直加到最高位,然后无限的循环;
if sum == i:
print(i)
然后在这个地方做筛选,一旦通过计算出来的这个sum值和给定的i也就是temp一致,马上打印。
整体思路就是通过两部实现:
1. 无限运算,得到一个值sum;
2. 筛选temp==sum,然后打印当前值(不相等的就不显示,但仍然存在运算,只不过看不到而已)。
这种方式真是巧妙,而且这样设置,可能也比那个连续for循环的节省内存,不知道这一点理解的对不对。 感谢分享 太有用了 我来这里解惑的 感谢分享学习心得,好让后辈们小走弯路。
页:
1
[2]