# Sample Python/Pygame Programs
# Simpson College Computer Science
# http://programarcadegames.com/
# http://simpson.edu/computer-science/

# Podemos emplear un bucle while allí donde, también, podríamos usar un bucle for:
i = 0
while i < 10:
    print(i)
    i = i + 1

# Es lo mismo que:
for i in range(10):
    print(i)

# Es posible simplificar el código:
# i=i+1
# Con lo siguiente:
# i += 1
# Esto lo podemos hacer también con la resta y la multiplicación.
i = 0
while i < 10:
    print(i)
    i += 1

# ¿Qué imprimiremos aquí?
i = 1
while i <= 2 ** 32:
    print(i)
    i *= 2

    

# Una tarea muy habitual, es iterar hasta que el usuario realiza una petición de salida.

salir = "n"
while salir == "n":
    salir = input ("¿Quieres salir? ")

    
# Existen diversas formas para salir de un bucle. Un operador booleano que dispare el evento es una
# forma de conseguirlo.
hecho = False
while not hecho:
    salir = input ("¿Quieres salir? ")
    if salir == "s":
        hecho = True;
        
    ataca = input ("¿El elfo atacó al dragón? ")
    if ataca == "s":
        print("Mala elección, estás muerto.")
        hecho = True;
    
valor = 0
incremento = 0.5
while valor < 0.999:
    valor += incremento
    incremento *= 0.5
    print(valor)
    

# -- Problemas habituales con los bucles while --

# El programador quiere hacer una cuenta atrás empezando en 10.
# ¿Qué es lo que está mal, y cómo lo podemos arreglar?
i = 10
while i == 0:
    print (i)
    i -= 1
    
# ¿Qué es lo que está mal en este bucle que intenta contar hasta 10? 
# ¿Qué sucederá cuando lo ejecutemos? 
i = 1
while i < 10:
    print (i)