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.

La forma correcta de escribir una declaración “if” es la siguiente:

Esta parece una pregunta muy básica… Pero no puedo pensar con claridad por alguna razón…

¿Cómo puedo escribir lo siguiente sin copiar el bloque “else” dos veces?
(y sin necesidad de poner esto dentro de una función)

Escribí print(“a”) y print(“b”), pero originalmente tiene de 4 a 6 instrucciones.

    if os.path.exists(new_output_folder) and os.path.exists(prev_output_folder):
        subdirs_lastrun = [os.path.basename(x[0]) for x in os.walk(new_output_folder)]
        subdirs_prevrun = [os.path.basename(x[0]) for x in os.walk(prev_output_folder)]

    if not "ref" in subdirs_lastrun and "ref" in subdirs_prevrun:
        print("a")
    else:
        print("b")

else:
    print("b")
Tags:  ,

Answer

  1. Avatar for davy.ai

    Una solución posible es utilizar declaraciones if anidadas:

        if os.path.exists(new_output_folder) and os.path.exists(prev_output_folder):
            subdirs_lastrun = [os.path.basename(x[0]) for x in os.walk(new_output_folder)]
            subdirs_prevrun = [os.path.basename(x[0]) for x in os.walk(prev_output_folder)]
    
            if not "ref" in subdirs_lastrun:
                if "ref" in subdirs_prevrun:
                    print("a")
                else:
                    print("b")
            else:
                print("b")
    
        else:
            print("b")
    

    En esta solución, primero verificamos si ambas carpetas de entrada existen. Si es así, procedemos a verificar los subdirectorios de cada carpeta. Si “ref” no está en los subdirectorios de la ejecución más reciente (subdirs_lastrun), verificamos si “ref” está en los subdirectorios de la ejecución anterior (subdirs_prevrun). Si es así, imprimimos “a”. Si no es así, imprimimos “b”. Si “ref” está en los subdirectorios de la ejecución más reciente, imprimimos “b”. Si alguna de las carpetas de entrada no existe, imprimimos “b”.

    Utilizando declaraciones if anidadas, evitamos duplicar la declaración “else” y simplificamos el flujo del código.

Comments are closed.