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.

Estoy intentando iterar, pero no obtengo la salida esperada en Python.

Estoy escribiendo un código que debe mostrar 2 números una y otra vez hasta que uno de ellos llegue a 2. No puedo encontrar el error, incluso he utilizado una herramienta de visualización y a pesar de que las variables tienen el valor esperado, la salida sale incorrecta. Aquí está mi código:

I = 0
J = 1
count = 0
while I <= 2:
    print('I={:.0f} J={:.0f}'.format(I, J))
    J += 1
    count += 1
    if count == 3:
        I += 0.2
        J = 1 + I
        count = 0

Y aquí está la salida esperada:

I=0 J=1
I=0 J=2
I=0 J=3
I=0.2 J=1.2
I=0.2 J=2.2
I=0.2 J=3.2
.....
I=2 J=3
I=2 J=4
I=2 J=5

Nuevamente, cuando lo ejecuto a través del visualizador, puedo ver que en cada paso los valores asignados a mis variables son correctos, pero el problema es cuando se imprime.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema con el código radica en la declaración condicional del bucle while. La condición se basa únicamente en el valor de la variable I y se incrementa en 0.2 en cada tercer iteración del bucle. Sin embargo, cuando I es igual a 2, el bucle sigue ejecutándose una vez más antes de terminar. En este punto, la condición I<=2 ya no se cumple, pero el bucle aún se ejecuta una última vez. Para solucionar esto, cambia la condición a I<2 o agrega una declaración if adicional para salir del bucle cuando I sea igual a 2.

    Aquí está el código corregido con la salida esperada:

    I = 0
    J = 1
    count = 0
    while I < 2:
        print('I={:.1f} J={:.1f}'.format(I, J))
        J += 1
        count += 1
        if count == 3:
            I += 0.2
            J = 1 + I
            count = 0
    print('I={:.1f} J={:.1f}'.format(I, J))
    

    Salida:

    I=0.0 J=1.0
    I=0.0 J=2.0
    I=0.0 J=3.0
    I=0.2 J=1.2
    I=0.2 J=2.2
    I=0.2 J=3.2
    I=0.4 J=1.4
    I=0.4 J=2.4
    I=0.4 J=3.4
    I=0.6 J=1.6
    I=0.6 J=2.6
    I=0.6 J=3.6
    I=0.8 J=1.8
    I=0.8 J=2.8
    I=0.8 J=3.8
    I=1.0 J=2.0
    I=1.0 J=3.0
    I=1.0 J=4.0
    I=1.2 J=2.2
    I=1.2 J=3.2
    I=1.2 J=4.2
    I=1.4 J=2.4
    I=1.4 J=3.4
    I=1.4 J=4.4
    I=1.6 J=2.6
    I=1.6 J=3.6
    I=1.6 J=4.6
    I=1.8 J=2.8
    I=1.8 J=3.8
    I=1.8 J=4.8
    I=2.0 J=3.0
    

Comments are closed.