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 Mostrar la Lista

¿Por qué new_item == 'SHOW' que no es un operador de asignación sin "continue" termina en la lista de compras?

¿Alguien puede ayudarme por favor?

1 Respuesta

¡Hola!

¡Buena pregunta! De hecho, el operador de comparación no actúa como un operador de asignación sin continue. Sigue siendo una comparación. Lo que está sucediendo es esto. Si olvidas "continue", el código se ve así:

# etc... algo de código antes de esto

while Verdadero:
    new_item = input(> )

    if new_item == DONE:
        break
    elif new_item == HELP:
        show_help()
        continue
    elif new_item == SHOW:
        show_list()

    add_to_list(new_item)

# etc... más código después de esto

Al ejecutar el programa, si escribes "SHOW", ese es el valor de new_item. Python está pasando por el bucle while. Obtiene una coincidencia exitosa en la línea elif new_item == "SHOW": así que comienza a ejecutar el código dentro, que es el show_list() comando. Hasta aquí, todo bien.

¡Pero sin un comando continue, que lo fuerza de vuelta al principio del bucle while, simplemente continúa! Así que termina ejecutando ese add_to_list(new_item) comando debajo de él, que no es lo que pretendías. new_item contiene "SHOW", así que add_to_list("SHOW"), y así es como "SHOW" terminaría en la lista de compras.

Para evitar esto, necesitarías tener un continue después del elemento show_list(), así:

# etc... algo de código antes de esto

while Verdadero:
    new_item = input(> )

    if new_item == DONE:
        break
    elif new_item == HELP:
        show_help()
        continue
    elif new_item == SHOW:
        show_list()
        # Agrega continue aquí... para que luego vuelva al principio del bucle while de nuevo.
        continue

    add_to_list(new_item)

# etc... más código después de esto

De esa manera no ejecutará el comando add_to_list si new_item es "SHOW".

¡Espero que esto ayude! Avísame si aún tienes alguna pregunta.

Ah, ya veo... ¡Muchas gracias! Ahora lo entiendo

Hola Louis,

Parece que sigo obteniendo "SHOW" en mi lista incluso cuando agrego continue, ver a continuación:

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.
Ingresa 'SHOW' para ver la lista actual.
""")


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


def show_list():
    print("Aquí está tu lista actual:")
    for item in shopping_list:
        print(item)


show_help()
while True:
    new_item = input("> ")
        add_to_list(new_item)
    if new_item == 'DONE':
        break
    elif new_item == 'HELP':
        show_help()
        continue
    elif new_item == 'SHOW':
        show_list()

        continue

show_list()