in python for loop,, jump over values

12,330

Solution 1

Don't do it in range(100). The for loop doesn't offer a way to skip ahead like that; time will be set to the next value in the list regardless of what you change it to in the body of the loop. Use a while loop instead, e.g.

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

Solution 2

Your assignment to time on the last line has no effect. At the top of the loop, time is immediately assigned to the next value yielded by range. But why is this a loop at all, can't you just do the calculations outright?

Solution 3

time will continually get overwritten each loop iteration, so time+=10 will not have the desired effect. You can convert the loop back into a C style loop using while and explicit mutation of the time variable or you could be fancy and setup an iterator which allows skipping ahead arbitrary values.

Share:
12,330
kirill_igum
Author by

kirill_igum

former AI lead. now, consulting regarding data compliance (CCPA, GDPR, LGPD, ...) and data infrastructure design.

Updated on June 05, 2022

Comments

  • kirill_igum
    kirill_igum almost 2 years
    time=0
    gold=0
    level=1
    for time in range(100):
      gold+=level
      if gold>20*level:
        level+=1
        time+=10
    

    with this program gold is added until it reaches a critical amount, then it takes 20s to upgrade a mine so it produces more gold. i'd like to skip those 20s (or 20 steps) in the loop? this works in c++, i'm not sure how to do it in python.