我的任务涉及建立在线购物计划。我的代码有效,但它不会将单个项附加到我的购物车。几乎相同的代码适用于附加两个衬衫。为什么它不会附加?
有趣的是,它不会在每次追加情况后打印出“购物车更新”消息。
以下许多代码都符合分配的方案/规则;附加代码位于用户想要订购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)
答案 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件衬衫,这会是什么样子?你能说它足够通用以处理任何数量吗?您需要一个追加操作的循环。
现在您已准备好尝试用户输入。不要重复:购物者可以选择衬衫和数量;然后你把它们踢出商店,因为你的受训者的大脑已经满了。
一旦 运作良好,您就可以循环寻找更多衬衫。这个程序从内到外很好地构建。玩得开心。写下很多打印语句;当你不需要它们时将它们注释掉,但是在整个程序工作一周之前不要删除它们。