Python:给一个字符串分配一个数字

Python: Assign a number to a string

我写了一个“购物车程序”,可以添加、删除、显示和清除购物车的内容。

现在我希望能够使用索引号从购物车中删除内容。 例如:如果我想将一个苹果添加到我的购物车并列出我的购物车的内容,它看起来像这样: https://i.stack.imgur.com/9kFpv.png

现在我希望能够删除购物车中的内容,该内容前面有索引号。我是 python 的菜鸟,如果我在装傻,请见谅。

# import necessary functions
from IPython.display import clear_output
# global list variable
cart = [ ]

# create function to add items to cart
def addItem(item):
          clear_output( )
          cart.append(item)
          print( "{} has been added.".format(item) )
# create function to remove items from cart
def removeItem(item):
           clear_output( )
           try:
            cart.remove(item)
            print( "{} has been removed.".format(item) )
           except:
            print("Sorry we could not remove that item.")
# create a function to show items in cart
def showCart( ):
           clear_output( )
           if cart:
            print("Here is your cart:")
           else:
            print("Your cart is empty.")
           for index, item in enumerate (cart):
            print( "{}) {}".format(index + 1, item) )
# create function to clear items from cart
def clearCart( ):
           clear_output( )
           cart.clear( )
           print("Your cart is empty.")
# create main function that loops until the user quits
def main( ):
           done = False
           while not done:
            ans = input("quit/add/remove/show/clear: ").lower( )
           # base case
            if ans == "quit":
                        print("Thanks for using our program.")
                        done = True
            elif ans == "add":
                      item = input("What would you like to add? ").title( )
                      addItem(item)
            elif ans == "remove":
                      showCart( )
                      item = input("What item would you like to remove? Type a number: ")
                      removeItem(item)
            elif ans == "show":
                      showCart( )
            elif ans == "clear":
                      clearCart( )
            else:
               print("Sorry that was not an option.")
main( )

这是我当前的代码。现在,当我想从购物车中删除一件商品时,我只能先写“remove”,然后再输入该商品的名称。看起来像这样: https://i.stack.imgur.com/zi4Ez.png 但是我希望能够根据索引号删除一个项目。

您可以使用 cart.pop() 方法。假设您要移除购物车中的第 3 件商品,您可以使用 cart.pop(2) .

您可以使用list.pop()功能取出物品, 您还可以存储要从列表中删除的本地项目,以确保这是您要删除的项目: 例如:

x = list.pop(<num of item>)

弹出后将从列表中删除 如果您不在 pop 函数中插入任何整数,则默认弹出最后添加的项目 (FIFO)

我建议使用字典更好更轻松地组织数据,每个值都可以有数量、序列号等。

在您的 removeItem(item) 函数中,将 cart.remove(item) 替换为 cart.pop(item)

pop() 使用其索引号从列表中删除元素。

这是实现您想要的目标的正确方法。

  1. 您需要使用 pop() 方法,该方法使用索引号从列表中删除项目。 所以像这样修改您的 RemoveItem 函数:

def removeItem(项目):

     clear_output( )
       try:
        cart.pop(item) # Used pop instead of remove
        print( "{} has been removed.".format(item))
       except:  
        print("Sorry we could not remove that item.")
  1. 然后,在您的 main() 函数中,您必须将用户输入值转换为整数值,以便它可以传递给函数并由 pop() 方法使用。 这是更新后的代码:

         elif ans == "remove":
                   showCart( )
                   item = int(input("What item would you like to remove? Type a number: "))[enter image description here][1]
                   removeItem(item)
    

我尝试按照上述更改修改您的代码并且效果很好。请参阅随附的输出屏幕截图以供参考。 Output