如何在Python程序到达某一点时停止它?

时间:2013-10-18 12:35:47

标签: python

我想创建一个函数,以便它找到整数a,以便a <= n

如果n99,则程序将返回a = 3。 这是因为函数是找到连续立方体的总和。 所以,1 + 8 + 27 + 64 = 100更多而不是99。但1 + 8 + 27 而不是99,因此a = 3是正确答案。

我试图做类似的事情:

cubes = 0
for i in xrange(1, 1+x)
     cubes += i*i*i
while cubes <= n

但我很困惑。我该怎么办?

3 个答案:

答案 0 :(得分:6)

首先用for循环替换while循环:

cubes, i = 0, 0
while cubes <= n:
    i += 1
    cubes += i ** 3

然后,在循环之后,减去最后一个多维数据集,因为你已超过限制n

cubes -= i ** 3

i仍然具有循环中的最终值。

或者,您可以在一个循环中执行所有操作,首先将cubes的新值计算为临时变量,然后仅在未超出限制时更新cubes

cubes, i = 0, 0
while True:    # infinite loop
    i += 1
    new_cubes = cubes + i ** 3
    if new_cubes > n:
        break
    else:
        cubes = new_cubes

答案 1 :(得分:1)

使用itertools.count和for循环:

from itertools import count
def solve(n, pow):
    total = 0
    for i in count(1):
        if total + i**pow > n:
            return i-1
        total += i**pow

<强>演示

>>> solve(99, 3)
3
>>> solve(50, 2)
4

答案 2 :(得分:0)

我是这样做的。

def cubes(n=1):
  while True:
    yield n ** 3
    n += 1

def sum(array):
  total = 0
  for item in array:
    total += item
    yield total

def sum_cubes_lt(n):
  for i, sum in enumerate(sum(cubes()):
    if sum > n:
      return i

# prints '3'
print sum_cubes_lt(99)