首页 > 解决方案 > 将“for循环”从 Javascript 转换为 Python

问题描述

我正在尝试将以下 javascript 代码转换为 python。

let speed = 50;
const lightCount = 1;
const lights = [[200, 10];

const isRed = (speed, dist, dur) =>
    (18 * dist) % (10 * speed * dur) >= (5 * speed * dur);

for(let i = 0; i < lightCount; i++) {
    if (isRed(speed, lights[i][0], lights[i][1])) {
        speed--; // Reduce speed
        i = -1; // Start again
    }
}
console.log(speed);

我在python中尝试了以下方法,但它不起作用:

speed = 50
light_count = 1
lights = [[200, 10]

def is_red(speed, dist, dur):
    if (18 * dist) % (10 * speed * dur) >= (5 * speed * dur):
        return True
    return False

for i in range(light_count):
    if is_red(speed, lights[i][0], lights[i][1]):
        speed -= 1
        i = -1

print(speed)

答案应该是 36,但它显示的是 49。它总是只循环一次。请提出解决方案。提前致谢

标签: javascriptpythonpython-3.xfor-loop

解决方案


编辑i不会退回循环。ints 是不可变的,因此您只是在编辑临时变量的状态。您可以尝试使用while循环,然后将 i 递增。

例子:

speed = 50
light_count = 1
lights = [[200, 10]

def is_red(speed, dist, dur):
    if (18 * dist) % (10 * speed * dur) >= (5 * speed * dur):
        return True
    return False

i = 0
while i < light_count:
    if is_red(speed, lights[i][0], lights[i][1]):
        speed -= 1
    #    i -= 1
    #i += 1
    else:
        i += 1
del i

推荐阅读