Bienvenido a la Comunidad de Treehouse
¿Quieres colaborar en errores de código? ¿Tienes errores que necesitan comentarios? ¿Buscas un par de ojos adicionales en tu último proyecto? aquí.
¿Buscas aprender algo nuevo?
Treehouse ofrece una prueba gratuita de siete días para estudiantes nuevos. Obtén acceso a miles de horas de contenido y únete a miles de
Inicia tu prueba gratuita
jun cheng wong
17021 puntosUnboundLocalError: variable local 'tickets_remaining' referenciada antes de la asignación
¿Cómo puedo resolver esto?
TICKET_PRICE = 10
tickets_remaining = 100
#ejecutar este programa hasta que se terminen los boletos.
def runProgram():
#Mostrar cuántos boletos quedan usando la variable tickets_remaining
print(("Quedan {} boletos, ¡asegúrate de conseguirlo rápido!!!").format(tickets_remaining))
#Recopilar el nombre del usuario y asignarlo a una nueva variable.
user_name = input("¿Cuál es tu nombre? ")
#Solicitar a los usuarios por nombre y preguntar cuántos boletos desean
ticket_number = int(input("Bienvenido al concierto, {}. ¿Cuántos boletos deseas comprar? ".format(user_name)))
si ticket_number < tickets_remaining:
#Calcular el precio (uso debido boletos x boleto precio) y asignar ese a a variable
total_price = TICKET_PRICE * ticket_number
#resultado el precio a el pantalla
print('Stuff.java:9 tienes ordenado [object Object] boletos. Los total precio es ${}'.format(ticket_number,total_price))
#prompt usuarios if ellos queremos a continuar? YexpresionesN
user_proceed = input('¿Deseas tú queremos a continuar a el pago process? Y o N ')
user_proceed = user_proceed.upper()
#If ellos queremos a continuar,
if user_proceed == "Y":
#nosotros resultado lo sugiere el pantalla "vendido" a confirm compra.
#Recopilar tarjeta de información y process lo.
print('VENDIDO!!!')
#y then decremento el boleto restante.
tickets_remaining -= ticket_number
#de lo contrario solo darles las gracias a
else:
print('Gracias tú, {}'.format(user_name))
else:
print('Nosotros son lo sentimos, hay son solamente [object Object] boletos disponible.')
if tickets_remaining > 0:
runProgram()
else:
print("Hemos agotado todos los boletos")
1 Respuesta
Felipe Giovanni de Moura Santos
23,702 puntos¿Qué onda Jun...
En el error, tickets_remaining se está llamando como una "variable local". Eso nos da una pista de que tienes un problema de alcance con ella.
tickets_remaining es una variable global y en Python, no hay problema en usarla dentro de una función. Sin embargo, no solo la estás usando, la estás actualizando desde dentro de la función. Para cambiar el valor de una variable global desde dentro de una función en Python, según w3schools.com debes hacer referencia a ella dentro de la función usando la palabra clave global.
Esto hará el trabajo:
def runProgram():
global tickets_remaining
#rest of the block
referencia: https://www.w3schools.com/python/python_variables_global.asp
jun cheng wong
17021 puntosjun cheng wong
17021 puntosgracias, ya entiendo