在运行时更改 Python for 循环范围(上限)

Change Python for loop range (higher limit) at runtime

如何在运行时更改 python for 循环的上限?

代码,

from random import randint

lower_limit = 0
higher_limit = 200
step_size = 5

for i in range(lower_limit, higher_limit, step_size):
    # do something

    higher_limit = higher_limit + randint(0, 5)

代码运行到第一个更高限制并且不关心声明的限制,可以做些什么来使它工作?

你需要使用 while:

from random import randint

lower_limit = 0
higher_limit = 200
step_size = 5

while i <higher_limit:
    # do something

    higher_limit = higher_limit + randint(0, 5)
    i += 5

范围一旦创建就无法修改。我认为您可以更轻松地重组逻辑并将 range 替换为 while:

lower_limit = 0
higher_limit = 200
step_size = 5
i = 0

while lower_limit <= i < higher_limit:
    # do something

    i = i + step_size

    higher_limit = higher_limit + randint(0, 5)

也许你可以定义你自己的范围版本(简体):

from random import randint

def higher_range(start, upto, step, inc):
    i = start
    while i < upto:
        yield i
        i += step
        upto += randint(0, inc)

for j in higher_range(0, 10, 5, 5):
    print j

显然,不能保证它会很快终止...