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.

¿Por qué mis cuatro variables “final” están sin definir? Pensaba que las había definido antes de usarlas.

Antes de que comiences a llorar de risa, entiende que empecé a aprender Python hace unas 2 semanas y esto es algo en lo que estoy trabajando solo para experimentar. ¿Alguien puede explicarme por qué mis variables “final” no están definidas, cuando las tengo enumeradas en las declaraciones if anteriores? En la declaración print al final, resalta esas variables con “final” en ellas y me dice que las variables no están definidas, y arroja un error cuando lo ejecuto. (hay una función llamada “diff” encima de la declaración return)

def diff(x, y):
    return x-y

if sale_type.upper() == "RS":
    final1_quantity = diff(int(rs_quantity), int(sale_quantity))
elif sale_type.upper() == "BS":
    final2_quantity = diff(int(bs_quantity), int(sale_quantity))
elif sale_type.upper() == "BP":
    final3_quantity = diff(int(bp_quantity), int(sale_quantity))
elif sale_type.upper() == "GP":
    final4_quantity = diff(int(gp_quantity), int(sale_quantity))

quant = input("¿Te gustaría ver nuestro inventario? (S/N)")
if quant.upper() == "S":
    print(f'''{final1_quantity} camisas rojas.
            {final2_quantity} camisas azules.
            {final3_quantity} pantalones negros.
            {final4_quantity} pantalones grises.''')
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema es que las variables final1_quantity, final2_quantity, final3_quantity y final4_quantity solo están definidas dentro de cada bloque de declaración if. Si ninguna de las declaraciones if se ejecuta, entonces esas variables nunca se definirán. Por lo tanto, si el usuario ingresa “Y” para quant, y ninguna de las declaraciones if se ha ejecutado previamente, entonces la instrucción print hará referencia a variables indefinidas y lanzará un error.

    Para resolver este problema, podrías definir las variables fuera de las declaraciones if con valores predeterminados de 0. Por ejemplo:

    final1_quantity = 0
    final2_quantity = 0
    final3_quantity = 0
    final4_quantity = 0
    
    if sale_type.upper() == "RS":
        final1_quantity = diff(int(rs_quantity), int(sale_quantity))
    elif sale_type.upper() == "BS":
        final2_quantity = diff(int(bs_quantity), int(sale_quantity))
    elif sale_type.upper() == "BP":
        final3_quantity = diff(int(bp_quantity), int(sale_quantity))
    elif sale_type.upper() == "GP":
        final4_quantity = diff(int(gp_quantity), int(sale_quantity))
    
    quant = input("¿Desea ver nuestro inventario? (Y/N)")
    if quant.upper() == "Y":
        print(f'''{final1_quantity} camisetas rojas.
                {final2_quantity} camisetas azules.
                {final3_quantity} pantalones negros.
                {final4_quantity} pantalones grises.''')
    

    De esta manera, incluso si ninguna de las declaraciones if se ejecuta, las variables seguirán estando definidas y la instrucción print no lanzará un error.

Comments are closed.