¿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.''')
davy.ai
El problema es que las variables
final1_quantity
,final2_quantity
,final3_quantity
yfinal4_quantity
solo están definidas dentro de cada bloque de declaraciónif
. Si ninguna de las declaracionesif
se ejecuta, entonces esas variables nunca se definirán. Por lo tanto, si el usuario ingresa “Y” paraquant
, y ninguna de las declaracionesif
se ha ejecutado previamente, entonces la instrucciónprint
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:De esta manera, incluso si ninguna de las declaraciones
if
se ejecuta, las variables seguirán estando definidas y la instrucciónprint
no lanzará un error.