我正在为我的GCSE做20小时的编码任务,并且我试图提出一些python代码来接受一个食物订单,然后将总数加起来并返回所有订单的运行总数,直到此时为止。我当前的代码有两个问题,并且没有收到错误消息,所以我不确定如何修复它以使其达到我的期望。
这是我的代码:python code for ordering system
第一个问题是,当输入某些项目引用组合时出现问题。总数未达到应有的总和,给了我一个没有合理小数位数的浮点数,但情况并非总是如此。另一个问题是,当我输入Y来下另一个订单时,它不允许我这样做。虽然当我输入N停止订购时,它会执行我想要的操作。
以下是显示这些问题的输出:code that's gone wild with the adding and not allowing me to enter another order
以下是一切正常的输出:all good
我已经设法实现了这两个单独的概念,即停止或继续执行的Y / N以及订购代码,在其他代码中,当我在这里尝试使用它们时,它是行不通的。我们多年来一直在寻找它,但仍无法弄清楚发生了什么。任何帮助将不胜感激!
[edit]这是我苦苦挣扎的代码:
>menuItems = [' ', 'Large all day breakfast', 'Small all day breakfast', 'Hot dog', 'Burger', 'Cheese burger', 'Chicken goujons', 'Fries', 'Salad', 'Milkshake', 'Soft drink', 'Still water', 'Sparkling water']
>menuPrices = [0.00, 5.50, 3.50, 3.00, 4.00, 4.25, 3.50, 1.75, 2.20, 2.20, 1.30, 0.90, 0.90]
>orderTotal = 0 #resets the order total so that the total is accurate
>runningTotal = float(0.0)
>orderWords = 'Order: '
>orderItem = 1
>ordering = True
>while ordering == True:
> while orderItem != 0:
> orderItem = int(input('Please list the item reference number: '))
> orderTotal = orderTotal + (menuPrices[orderItem])
> orderWords = orderWords + ' ' + (menuItems[orderItem])
> runningTotal = runningTotal + (menuPrices[orderItem])
> else:
> print(orderWords)
> print('Your total is: £', orderTotal)
> ordering = False
>else:
> proceed = str(input('Do you want to place another order (Y/N)? '))
> if proceed == 'Y':
> ordering = True
> if proceed == 'N':
> ordering = False
> print('Running total: £', runningTotal)
> else:
> ordering = True
答案 0 :(得分:0)
正如 @quaabaam 所说,请在问题中复制并粘贴有问题的代码,这样我们就可以在需要时将其复制并进行调试。
我假设应该将menuItems和menuPrice链接在一起,这意味着“大一整天的早餐”的价格为5.50。在这种情况下,最好使用字典。例如:
Menu = {"Large all day breakfast" : 5.50, "Small all day breakfast" : 3.50, ... }
通过这种方式,您只需调用价格即可,例如将价格x = Menu["Large all day breakfast"]
设为x,在本例中为5.50。
例如,您可能想将while ordering == True
更改为一个函数
def ordering():
while True:
orderItem = int(input(...
if orderItem != 0:
orderTotal += menuPrices[orderItem] #x += 1 means that you increase x by 1, it's basically what you wrote but different notation
else:
print(orderWords)
...
break
proceed(runningTotal)
def proceed(runningTotal):
proceed = ...
elif proceed == "N":
ordering()
如果您尚未研究功能,我强烈建议您这样做,因为它非常重要,尤其是在这里