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

当Python程序达到某一点时,如何停止它?,python,Python,我想创建一个函数,这样它将找到整数a,这样a首先将for循环替换为,而循环: cubes, i = 0, 0 while cubes <= n: i += 1 cubes += i ** 3 i仍保留循环中的最终值 或者,您可以在一个循环中完成所有操作,首先将cubes的新值作为临时变量进行计算,然后仅在未超出限制的情况下更新cubes: cubes, i = 0, 0 while True: # infinite loop i += 1 new_c

我想创建一个函数,这样它将找到整数a,这样
a首先将
for
循环替换为
,而
循环:

cubes, i = 0, 0
while cubes <= n:
    i += 1
    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
我会这样做的

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)
使用和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

cubes,i=0
可能需要替换为
cubes=0;i=0
@cdarke:实际上我的意思是
立方体,i=0,0
。更新了,谢谢。我还是会根据@cdarke的建议修改它。很明显,OP对Python来说是新的(可能是一般编程),对于新手程序员来说,它是一个令人困惑的构造。可能会使它更具可读性。@KenB或者,一些括号会使它更具可读性(尽管它们不是必需的)。欢迎使用stackoverflow!当你的电源与OP的
a
无关时,称它为
a
很好,但可能会让人困惑。由于OP显然刚刚开始,请解释一下
count(1)
?@beroe我已经把它和文档联系起来了。修正了变量相关的混乱。
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