在网上看到一个数学题,整数 33 能否用三个整数的立方和表示。正好刚开始学 Python,就写了个小程序:
import sys
max=sys.maxint
min=-sys.maxint-1
for x in xrange(min,max):
for y in xrange(min,max):
for z in xrange(min,max):
if x**3+y**3+z**3==33:
print "x=",x
print "y=",y
print "z=",z
简单粗暴,就是不停地尝试。
但在运行时,提示:OverflowError: xrange() result has too many items
按照书上的说法,xrange 每次循环只会产生一个对象,应该不会这样。range 每次都是先生成所有的数据,所以容易出现这个问题,而且性能也不好。
以上是 python2 程序。
(因为书上提到 python3 中的 range 和 python2 中的 xrange 相同,所以把程序换成了 python3,现在正在运行)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.