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

Shopping_List.py

Me gustaría mejorar este código un poco agregando una nueva función llamada remove_list() al código existente. El objetivo es pedirle al usuario que proporcione una entrada para eliminar elementos de la lista agregada.

A continuación se muestra cómo escribí el código y la operación DEL funciona, pero el problema es que cuando el usuario ingresa la palabra clave "DEL", se agrega a la lista existente, lo que no debería ser así ya que "DEL" se supone que funciona como un comando para realizar la operación.

¿Puede alguien aconsejarme qué estoy haciendo mal:

shopping_list = []

def show_help():

def add_to_list(item):

def remove_list(item):

def show_list():

show_help()

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

add_to_list(new_item)

if new_item == 'DEL':
    rem_item = input("Ingresa el elemento que deseas eliminar:")
    remove_list(rem_item)

show_list()

Para resolver el problema de que 'DEL' se agregue a la lista, debes agregar 'continue' justo después de remove_item(rem_item).

Un par de otros cambios que sugeriría serían los siguientes:

if new_item == 'DEL':
    rem_item = int(input("Ingresa el elemento que deseas eliminar:")) - 1
    remove_list(rem_item)
    continue

Cambiaría la entrada a un número entero con int() y luego restaría uno ya que Python usa un índice basado en 0, así que si el usuario desea eliminar lo que cree que es el elemento 1, necesitas restar 1 para eliminar realmente el elemento correcto.

¡Espero que ayude :)

2 Respuestas

Porque tienes un if separado, necesitas agregarlo como elif a las otras cláusulas anteriores; actualmente tu código hace esto:

# evalúa estos y si una de estas tres opciones, haz lo necesario
if new_item == DONE:
    break
elif new_item ==HELP:
    show_help()
    continue
elif new_item == SHOW:
    show_list()
    continue

# AQUÍ AGREGAS LO QUE SEA A LA LISTA
add_to_list(new_item)

# y después verificas si debe ser eliminado o no
# ¡así que mueve esto por encima del segmento anterior!
if new_item == 'DEL':
    rem_item = input(Ingresa el elemento que deseas eliminar:)
    remove_list(rem_item)

¡Espero que esto te ayude!

Hola Josh,

A continuación se muestra lo que hice y funcionó para mí.

elif new_item == "DEL":

¡Me alegra que hayas logrado resolverlo! ¡Tú puedes!