用Python组织购物车代码

问题描述 投票:0回答:2

我开始学习Python,我尝试编写一个购物应用程序的简单代码,我想让用户通过输入名称(无论大小写)来从列表中删除项目。

这是代码:

cart = []

items1 = input("Search For What You Want : ")

cart = items1.split("and")

items2 = print("so here is your crate : \n" , cart , "\n Do you want to remove item? : ")

agree = input("")

if agree == "Yes" or "yes":
    itemRemove = input("Type the name of item you want to remove : ")
        cart.remove(itemRemove)
        print("Alr Here Is Your Crate : \n" , cart)   

我尝试在

itemRemove
变量中输入我将在终端中写入的项目,但出现错误。

python list
2个回答
1
投票
  1. 当您将用户输入拆分为

    cart
    变量时,您将按
    and
    进行拆分,但用户可能会添加空格。例如,如果我输入

    pickles and onions
    

    然后购物车将如下所示:

    ['pickles ', ' onions']
    

    相反,您想按字符串分割

    ' and '

  2. 逻辑运算符(如

    and
    or
    )用于比较条件,而不是字符串、数字或对象。
    agree == "Yes" or "yes"
    正在将条件与字符串进行比较,并且 因为所有字符串都是“真实的”,因此将始终评估为
    TRUE

    相反:

    if agree == "Yes" or agree == "yes":
    
  3. 测试用户输入时,您可以通过将字符串转换为小写来使其不区分大小写:

    if agree.lower() == "yes"
    

    您可以使用相同的逻辑从购物车中删除该商品:

    cart.remove(itemRemove.lower())
    

最终,真正的答案是学习如何调试代码。第一个问题可以通过在使用

print(cart)
创建列表后打印出来并看到输出中包含空格来解决。

第二个问题很难通过调试来发现,但是如果您刚刚让代码与

if agree=="Yes"
一起工作,然后发现它在添加
or "yes"
后就崩溃了,您可以推断出您做错了什么,并通过阅读文档进行调查关于
or


0
投票

打印出您的

cart
列表,您会看到每个条目周围都有空格字符,例如
["green eggs ", " ham"]
因此,由于尾随空格,
itemRemove
"green eggs"
不会与列表的
"green eggs "
匹配。

在下面的示例中,我们在创建购物车列表时删除前导/尾随空格:

cart = []

items1 = input("Search For What You Want : ")

cart = items1.split("and")

# Remove leading/trailing whitespace
for counter in range(len(cart)):
    cart[counter] = cart[counter].strip()

items2 = print("so here is your crate : \n" , cart , "\n Do you want to remove item? : ")

agree = input("")

if agree == "Yes" or "yes": # <-- this is always true, but that wasn't the question

    itemRemove = input("Type the name of item you want to remove : ")

    print(f'"{itemRemove}"')

    cart.remove(itemRemove)

    print("Alr Here Is Your Crate : \n" , cart)    
© www.soinside.com 2019 - 2024. All rights reserved.