es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Rompiendo el bucle for cuando se ingresan dos entradas iguales seguidas, Python

Estoy haciendo un código que calcula el promedio de créditos que el usuario ingresa en Python. El ciclo debería terminar si el usuario ingresa dos ceros seguidos y he intentado todo lo que puedo para lograrlo pero estoy teniendo dificultades. ¿Alguien podría ayudarme? Este es el código que he escrito hasta ahora. Disculpa por el mal inglés, soy un estudiante de Finlandia 😀

meses = int(input("Ingrese el número de meses: "))
lista = []
iteraciones = 1
for iteraciones in range(1, meses + 1):
    print("Ingrese el número de créditos en el mes", iteraciones, end="")
    creditos = int(input(": "))
    lista.append(creditos)
    if len(lista) >=2 and lista[-1] == 0 and lista[-2] == 0:
        print("¡Tuviste demasiados descansos de estudio!")
        break
    iteraciones += 1

promedio_creditos = sum(lista) / meses
print("Tu promedio mensual de puntos de crédito es", promedio_creditos, ".")
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para salir del bucle si el usuario ingresa dos ceros consecutivos, necesitas llevar un registro de la entrada anterior en una variable. Aquí tienes una versión actualizada de tu código con esta lógica agregada:

    meses = int(input("Ingrese el número de meses: "))
    lista_creditos = []
    creditos_anteriores = -1
    
    for i in range(1, meses + 1):
        creditos = int(input("Ingrese el número de créditos en el mes {}: ".format(i)))
    
        if creditos == 0 and creditos_anteriores == 0:
            print("¡Tuviste demasiados descansos de estudio!")
            break
    
        lista_creditos.append(creditos)
        creditos_anteriores = creditos
    
    promedio_creditos = sum(lista_creditos) / meses
    print("Tu promedio mensual de puntos de crédito es", promedio_creditos, ".")
    

    Como puedes ver, agregamos la variable creditos_anteriores para almacenar el valor de la entrada anterior, inicializada en -1, que no es una entrada válida y no interferirá con la lógica. Luego, dentro del bucle, agregamos una condición if para verificar si la entrada actual es 0 y la entrada anterior también fue 0. Si ese es el caso, imprimimos el mensaje y salimos del bucle con break. Finalmente, actualizamos creditos_anteriores con la entrada actual antes de agregarla a la lista.

Comments are closed.