Python 如何删除包含字符串的变量?

Python 如何删除包含字符串的变量?,python,string,variables,if-statement,typeerror,Python,String,Variables,If Statement,Typeerror,这是我为一个学校项目写的程序。在最后一个else函数中,您可以看到我试图删除之前的比萨饼订单,因为用户输入了一个错误。但是,使用简单的-=将为-=:“str”和“str”授予TypeError:不支持的操作数类型。这是我第一次在Scratch(:P)以外的地方写东西,希望能得到帮助 item_names = ["0","Super Supreme\n","Meat Lovers\n","BBQ Chicken & Bacon\n",\ "Apricot Chi

这是我为一个学校项目写的程序。在最后一个else函数中,您可以看到我试图删除之前的比萨饼订单,因为用户输入了一个错误。但是,使用简单的-=将为-=:“str”和“str”授予TypeError:不支持的操作数类型。这是我第一次在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

使用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

您不能减去两个字符串。

您可能希望使
running\u names
列表包含字符串,而不是字符串本身。然后,您可以轻松地从列表中删除该项目。您的名称和价格应分组为元组或创建一个类。并行阵列是一种糟糕的做法
items=[('Super Supreme',10.50),('Meat Lovers',10.50),…]
你可以很容易地创建一个for循环,即
用于项目名称、价格:
所以我试着打印(运行\u names.replace(“item\u name[项目编号]\n“,”),但它不起作用……你为什么要将
项目名称[项目编号]\n”
放在引号中?只需按照我在回答中所说的那样做无需担心,您很好,
item\u name[items\u number]
将通过索引添加最后一项,该索引是一个字符串