【问题标题】:How can I remove a variable that contains a string?如何删除包含字符串的变量?
【发布时间】:2014-10-28 10:13:52
【问题描述】:

这是我为学校项目编写的程序。在最后一个 else 函数中,您可以看到我正在尝试删除之前的披萨订单,因为用户打错了。但是,使用简单的 -= 会授予 TypeError: unsupported operand type(s) for -=: 'str' and 'str'。这是我第一次在 Scratch (:P) 以外的地方写任何东西,因此不胜感激。

item_names = ["0","Super Supreme\n","Meat Lovers\n","BBQ Chicken & Bacon\n",\
              "Apricot Chicken\n","Satay Chicken\n","Pepperoni Feast\n",\
              "Beef Italiano\n","Seafood Deluxe\n","BBQ Hawaiian\n",\
              "Peperoni Lover\n","Veg Supreme\n","Trio of Cheese\n",\
              "Beef Hot 'n Spicy\n","Roma\n","Hawaiian\n","Classic Cheese\n",\
              "Veg Hot 'n Spicy\n","Ham and Cheese\n","Beef and Onion\n",\
              "Margherita\n","Large Fries\n","Garlic Bread\n","Onion Rings\n",\
              "5 Spicy Chicken Wings","Dipping Sauce (","Orange Juice\n",\
              "Bottled Water\n","355ml Soft Drink (","1.5L Soft Drink ("];
item_prices = [0,10.50,10.50,10.50,10.50,10.50,10.50,10.50,10.50,8.00,8.00,\
               8.00,8.00,8.00,8.00,5.00,5.00,5.00,5.00,5.00,5.00,3.50,3.50,\
               3.50,5.00,0.50,3.50,3.50,1.90,3.90];

print('Hello and welcome to the Shinanigan Pizzary!')
start =1
while start == 1:
    menu_prompt = str(input("Would you like to open the menu? y/n\n"))
    if menu_prompt == "y":
        start =0
        menu()
        running_total =0
        running_names =''
        loop1 =1

        while loop1 == 1:
            try:
                items_number = int(input("Please insert your desired item's number\n"))

                running_total += float((item_prices[items_number]))
                running_names += item_names[items_number]
                query1 = str(input("Is that all? y/n\n\n"))
            except IndexError:
                    print("Please enter a valid item number.\n\n")

            if query1 == "y":
                loop1 =0
                print(running_names)
                print("Running total:","$",(running_total))
                print("\nThank you for coming! Your order is being made!")
            elif query1 == "n":
                print(running_names)
                print("Running total:","$",(running_total))
            else:
                running_total -=float((item_prices[items_number]))
                running_names -= item_names[items_number]
                print("Please enter 'y' or 'n'")

    elif menu_prompt == "n":
        print("Okay. Thanks for coming. See you next time.")
        break

【问题讨论】:

  • 您可能希望将running_names 设为包含字符串而不是字符串本身的列表。然后您可以轻松地从列表中删除该项目。
  • 您的姓名和价格应分组为元组或创建一个类。并行数组是不好的做法。 items = [('Super Supreme', 10.50), ('Meat Lovers', 10.50), ...] 您可以轻松创建一个 for 循环,即 for name, price in items:

标签: python string variables if-statement typeerror


【解决方案1】:

使用 str.replace 将字符串替换为空字符串:

running_names = running_names.replace(item_names[items_number],"")

In [6]: running_names = "Hawaiian\n mistake\n"

In [7]: print( running_names.replace("mistake\n",""))
Hawaiian

你不能减去两个字符串。

【讨论】:

  • 所以我尝试了 print(running_names.replace("item_name[items_number]\n","")) 但它不起作用......
  • 你为什么要把"item_name[items_number]\n"放在引号里?完全按照我的回答去做
  • 不用担心,欢迎您,item_name[items_number] 正在获取索引添加的最后一项,这是一个字符串
猜你喜欢
  • 1970-01-01
  • 2018-08-08
  • 2022-11-27
  • 2014-04-16
  • 1970-01-01
  • 2016-11-07
  • 1970-01-01
  • 2014-05-20
相关资源
最近更新 更多