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.

¿Cómo ejecutar mi bucle if solo una vez en Python?

Estoy usando un if-loop para realizar un pedido en mi consola, pero después de que se cumple la condición, se imprime varias veces.


if len(pos_df.columns) == 0 and len(ord_df.columns) == 0:
for i in range(0,len(bricks_counts)):
if bricks_counts[i] == -23 and red_neg == True:
placeCoverOrder(ticker,"sell",quantity,high_down)
print("orden de venta colocada {}".format(ticker))
break

Quiero que este bucle se ejecute solo una vez, lo que significa que solo debe ejecutarse una vez en la primera iteración y no debería ejecutarse en la segunda iteración (el if-loop debería convertirse en falso en la segunda iteración).

Cualquier ayuda sería muy útil para mí y sería apreciada. También se aceptarán líneas de código adicionales. 🙂

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para asegurarse de que este bucle se ejecute solo una vez, se puede agregar una variable booleana que lleve el registro de si el bucle ya se ha ejecutado. Esta variable se puede establecer en Verdadero después de que se ejecute el bucle por primera vez.

    Aquí hay un ejemplo de cómo se puede modificar el código:

    if len(pos_df.columns) == 0 and len(ord_df.columns) == 0:
        loop_ran = False
        for i in range(0,len(bricks_counts)):
            if bricks_counts[i] == -23 and red_neg == True and not loop_ran:
                placeCoverOrder(ticker,"sell",quantity,high_down)
                print("sell order placed {}".format(ticker))
                loop_ran = True
                break
    

    Este código inicializa una variable booleana llamada loop_ran en False. Dentro del bucle, agregamos una verificación para asegurarnos de que se cumpla la condición if y de que loop_ran todavía es False. Una vez que se ejecuta el bucle con éxito, establecemos loop_ran en True, y el bucle no se volverá a ejecutar.

Comments are closed.