将“for循环”从Javascript转换为Python

2024-10-01 17:24:49 发布

您现在位置: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。 它总是只循环一次。 请提出解决办法。 提前谢谢


Tags: forreturnifisdistcountredlight
1条回答
网友
1楼 · 发布于 2024-10-01 17:24:49

编辑i不会使循环后退int是不可变的,因此您只需编辑临时变量的状态。您可以尝试使用一个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

相关问题 更多 >

    热门问题