2011-03-07 21 views
5
time=0 
gold=0 
level=1 
for time in range(100): 
    gold+=level 
    if gold>20*level: 
    level+=1 
    time+=10 

con este programa de oro se añade hasta que alcanza una cantidad crítica, entonces se necesitan 20 para actualizar una mina por lo que produce más oro. me gustaría omitir esos 20 (o 20 pasos) en el ciclo? esto funciona en C++, no estoy seguro de cómo hacerlo en Python.en pitón para bucle ,, saltar por encima de los valores

Respuesta

17

No lo haga en range(100). El bucle for no ofrece una manera de saltear así; time se establecerá en el siguiente valor en la lista, independientemente de lo que lo cambie en el cuerpo del bucle. Use un bucle while en su lugar, p.

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

time continuamente se sobrescribirá cada repetición del bucle, por lo time+=10 no tendrá el efecto deseado. Puede convertir el bucle nuevamente en un bucle de estilo C usando while y una mutación explícita de la variable time o puede ser que le apetezca y configure un iterador que le permita saltear valores arbitrarios.

1

Su asignación a time en la última línea no tiene ningún efecto. En la parte superior del ciclo, time se asigna inmediatamente al siguiente valor obtenido por range. Pero ¿por qué es esto un ciclo, no puedes hacer los cálculos directamente?

Cuestiones relacionadas