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

Python Introducción a las Listas Crear una Aplicación Agregar Elementos

DONE es el resultado

https://w.trhou.se/6hhguqz2nq

Mi entrada.
huevos
jamón
queso

Mi resultado.
DONE
¡Agregado! La lista tiene elementos.

f string no funciona pero sé por qué.
Me gustaría ver una lista pero ¿por qué estoy obteniendo done como resultado?

2 Respuestas

Asher Orr
sello-máscara
.a{fill-rule:evenodd;}techdegree seal-36
Asher Orr
Desarrollo en Python Graduado de Techdegree 9,411 Puntos

¡Hola Jas0n!

Aquí está el problema: estás llamando a la función add_to_list solamente si "DONE" es la entrada del usuario.

Para ver lo que quiero decir, consulta los comentarios:

show_help()
#mostrar mensaje

while Verdadero:
    new_item = input(> )
    # pedir entrada del usuario

    if new_item == DONE:
    # si la entrada es "DONE", sal del bucle.
    # luego llama a la función add_to_list.
        break
    elif new_item == HELP:
    # si la entrada es "HELP", muestra el mensaje show_help y continúa el bucle.
        show_help()
        continue

add_to_list(new_item)
#cuando tu bucle while se rompa, llama a esta función.

La función add_to_list se llama cuando se rompe el bucle. El bucle se rompe solo cuando new_item == "DONE".

Para solucionar el problema, ajusta tu código para llamar a esa función si se ingresa algo que no sea "DONE".

Espero que esto ayude. ¡Déjame saber si tienes más preguntas!

¿O podría llamar a la lista cuando se ingresa done, tiene sentido?

if new_item == "DONE":
    break
elif new_item == "END":
    print(add_to_list(new_item))
elif new_item == "HELP":
    show_help()
    continue

Hice lo anterior pero todavía sin suerte

Estoy intentando imprimir la lista cuando se ingresa DONE

Asher Orr
sello-máscara
.a{fill-rule:evenodd;}techdegree seal-36
Asher Orr
Desarrollo en Python Graduado de Techdegree 9,411 Puntos

Podrías llamar a la lista cuando se ingrese "DONE". En el código nuevo, estás imprimiendo la función add_to_list si la entrada del usuario es "END".

Compáralo con este código:

while Verdadero:
    new_item = input(> )
    #pedir entrada del usuario
    if new_item == DONE:
        break
    #si la entrada es "DONE", sal del bucle.
    elif new_item == HELP:
        show_help()
        continue
    #pero si la entrada es "HELP", llama a la función show_help y repite el bucle.
    else:
        add_to_list(new_item)
    #¡si la entrada no es DONE o HELP, llama a la función add_to_list! 

Para mostrar todo el contenido de la lista, podrías crear una función show_list y añadirla a tu script.

¿Esto tiene sentido?

shopping_list = []

def add_to_list(item):
shopping_list.append(item)
print("¡Agregado! La lista tiene elementos.".format(len(shopping_list)))

def show_help():
print("¿Qué deberíamos comprar en la tienda?")
print("""
Ingresa 'DONE' para dejar de agregar elementos.
Ingresa 'HELP' para obtener esta ayuda.
""")

show_help()

while True:
new_item = input("> ")
### ### ### ### Abajo agregué una nueva función para mostrar que la lista es esto lo que quisiste decir.
if new_item == "DONE":
def show_list():
print(shopping_list)
show_list()
break

elif new_item == "HELP":                                                                                                                       
       show_help()                                                                                                                                             
       continue                                                                                                                                            

else:
       add_to_list(new_item)