в питоне за цикл, перепрыгнуть значения - PullRequest
5 голосов
/ 07 марта 2011
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 ]

17 голосов
/ 07 марта 2011

Не делайте этого в range(100). Цикл for не предлагает способ пропустить это; time будет установлено на следующее значение в списке независимо от того, на что вы изменили его в теле цикла. Вместо этого используйте цикл while, например

time = 0
while time < 100:
   gold += level
   if gold > 20 * level:
      level +=1
      time += 10
   time += 1
1 голос
/ 07 марта 2011

Ваше присвоение time в последней строке не имеет никакого эффекта.В верхней части цикла, time немедленно присваивается следующему значению, полученному с помощью range.Но почему это вообще цикл, разве вы не можете просто выполнить вычисления напрямую?

1 голос
/ 07 марта 2011

time будет постоянно перезаписываться при каждой итерации цикла, поэтому time+=10 не будет иметь желаемого эффекта.Вы можете преобразовать цикл обратно в цикл в стиле C, используя while и явную мутацию переменной time, или вы можете захотеть установить итератор, который позволяет пропускать произвольные значения вперед.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...