“购物车”列表不会附加在网上购物计划中,我错过了什么?

时间:2017-10-09 21:44:26

标签: python list append

我的任务涉及建立在线购物计划。我的代码有效,但它不会将单个项附加到我的购物车。几乎相同的代码适用于附加两个衬衫。为什么它不会附加?

有趣的是,它不会在每次追加情况后打印出“购物车更新”消息。

以下许多代码都符合分配的方案/规则;附加代码位于用户想要订购1或2件衬衫的时间。

cart = list()

def shop():
    # some code for shopping categories and displaying items
    pass

def shirtorder():
    while True:
        shirtitem = input('Please type in the name of the shirt you would like to purchase.''\n')
        numbershirt = input('How many would you like to purchase?''\n')
        numbershirt = int(numbershirt)
        if numbershirt > 2:
            print('We are sorry, but there are only 2', shirtitem, 'in stock.')
            while True:
                yesornoshirt = input('Would you like to order fewer of that shirt? Please answer "yes" or "no."''\n')
                if yesornoshirt == "yes" or yesornoshirt== "y" or yesornoshirt == "Y" or yesornoshirt == "Yes":
                    numbershirt = input('How many would you like to purchase?''\n')
                    numbershirt = int(numbershirt)
                    if numbershirt == 2:
                        while len(cart) >= 0:
                            cart.append(shirtitem)
                            cart.append(shirtitem)
                            print('Cart updated.')
                            shop()
                            break
                        break
                    if numbershirt == 1:
                        while len(cart) >= 0:
                            cart.append(shirtitem)
                            print('Cart updated.')
                            shop()
                            break
                        break
                    if numbershirt == 0:
                        shop()
                        break
                    if numbershirt < 0:
                        print('Invalid number of shirts. Please try again.')
                        continue
                if yesornoshirt == "n" or yesornoshirt == "no" or yesornoshirt == "No" or yesornoshirt == "N":
                    print('None have been added to your cart.')
                    shop()
                    break
                try:
                    yesornoshirt = float(yesornoshirt)
                    yesornoshirt = int(yesornoshirt)
                except:
                    print('Please answer only "yes" or "no."')
                    continue
        if numbershirt == 2:
            while len(cart) >= 0:
                cart.append(shirtitem)
                cart.append(shirtitem)
                print('Cart updated.')
                shop()
                break
            break
        break
        if numbershirt == 1:
            while len(cart) >= 0:
                cart.append(shirtitem)
                print('Cart updated.')
                shop()
                break
            break
        break
        if numbershirt == 0:
            shop()
            break
        if numbershirt < 0:
            print('Invalid number of shirts. Please try again.')
            continue

shirtorder()

print(cart)

1 个答案:

答案 0 :(得分:1)

立即问题

你的逻辑流程有问题:

if numbershirt == 2:
    while len(cart) >= 0:
        cart.append(shirtitem)
        cart.append(shirtitem)
        print('Cart updated. 2Y')
        shop()
        break  # problem 3
    break  # problem 2
break  # problem 1

if numbershirt == 1:
    print ("TRACE A1: cart", cart, len(cart))
    while len(cart) >= 0:
        ...

问题1 :您知道中断的作用吗?在这种情况下,它退出 while 循环。您永远无法达到以下声明,因此无法注册单件衬衫 - 或者没有衬衫或衬衫。

问题2 :您对此有何看法?你打破了 if 语句,这不是一个迭代过程。

问题3 :此必须在第一次执行时退出,这表示您不应该使用虽然

<强>分析

非常简短地说,你试图一次性编程远远超出你的能力。你已经编写了超过70行代码而没有测试这些代码;你现在在多个地方犯了几个错误。你不习惯编写一些控制流组合......

幸运的是,这是可以解决的。欢迎来到学习过程。

该怎么做

使用增量编程。写几行代码。测试它们,修复它们并继续测试,直到你确定这些线条是实心的。 然后再添加几行。这将使您无法重复使用代码中的错误。

例如,从特定衬衫的强制案例开始。这样的事情(使用你当前的设置):

shirtitem = "Generic white tee"
numbershirt = 2
if numbershirt == 2
    cart.append(shirtitem)
    cart.append(shirtitem)
    print('Cart updated;', numbershirt, shirtitem)
    print('Cart:', cart)

注意简单的更改:跟踪输出以显示结果;我删除了无用的

现在,如果你可以拿10件衬衫,这会是什么样子?你能说它足够通用以处理任何数量吗?您需要一个追加操作的循环。

现在您已准备好尝试用户输入。不要重复:购物者可以选择衬衫和数量;然后你把它们踢出商店,因为你的受训者的大脑已经满了。

一旦 运作良好,您就可以循环寻找更多衬衫。这个程序从内到外很好地构建。玩得开心。写下很多打印语句;当你不需要它们时将它们注释掉,但是在整个程序工作一周之前不要删除它们。