在Python for循环中跳过值

5 投票
3 回答
13683 浏览
提问于 2025-04-16 13:08
time=0
gold=0
level=1
for time in range(100):
  gold+=level
  if gold>20*level:
    level+=1
    time+=10

这个程序的功能是不断增加黄金,直到达到一个重要的数量,然后需要20秒来升级矿井,这样矿井就能生产更多的黄金。我想在循环中跳过这20秒(或者说20步)。这个在C++中可以做到,但我不太确定在Python中该怎么做。

3 个回答

1

在每次循环中,time 的值会不断被覆盖,所以 time+=10 这个操作不会达到你想要的效果。你可以把这个循环改成 C 语言那种风格的循环,使用 while 来手动改变 time 的值,或者你也可以用一种更高级的方式,设置一个迭代器,这样就可以跳过任意的值。

1

你在最后一行给time的赋值没有任何作用。在循环的开始,time会立刻被range生成的下一个值覆盖。那么,这个循环到底有什么意义呢?难道不可以直接计算吗?

17

不要在 range(100) 中这样做。for 循环没有办法像那样跳过某些值;无论你在循环内部把 time 改成什么,它都会自动设置为列表中的下一个值。可以改用 while 循环,比如:

time = 0
while time < 100:
   gold += level
   if gold > 20 * level:
      level +=1
      time += 10
   time += 1

撰写回答