我正在编写一个脚本,它可以找到一个小于或等于某个特定值的出租车号码(这样的号码n至少是两个不同方式的两个立方体的总和)。你知道吗
在我的脚本中,t是我的当前变量,它试图设置可打印的最大出租车号码,但脚本打印的值超出了我设置的限制。你知道吗
t = 10000
cubes, crev = [x**3 for x in range(1,1000)], {}
# for cube root lookup
for x,x3 in enumerate(cubes): crev[x3] = x + 1
sums = sorted(x + y for x in cubes for y in cubes if y < x)
idx = 0
n = 0
for i in range(1, len(sums)-1):
if sums[i-1] != sums[i] and sums[i] == sums[i+1]:
if n<t:
idx += 1
n = sums[i]
print "%10d"%(n)
else:
break
带输出:
1729
4104
13832
设定t=10000的期望输出为:
1729
4104
有人知道如何让if语句按所需的方式运行吗?我花了很长时间来做这个小小的改变。。你知道吗
正如@BlivetWidget指出的,您正在检查
n
的旧值,但正在打印n
的新值。试着像这样修改代码。你知道吗旧的:
新增:
这将是一个良好的开端。然后您可以做更多的更改,比如去掉不使用的
idx
值。你其实也不需要n
,因为这只是另一种写作方式sums[i]
:这看起来简单多了,应该能达到你的期望。你知道吗
n=应从if条件中取出总和[i]。你知道吗
相关问题 更多 >
编程相关推荐