我有一本如下的字典。
stock = {"samosa":5, "Kebab":5, "Shawarma":7}
我也有输入文本输入值如下
food = input{"What was the food delivered: "}
数量为
qty = input{" Enter the quantity of the order: "}
所以我的比较是检查和比较数量和字典中股票的价值。如果有人订购了更多,他们会得到一条消息,他们已经订购了更多。我已经尝试过用这种方式来实现它。
if food in stock:
stock[food] -= int(qty)
print(stock)
elif int(qty) > stock[food]:
print("There is no enough stock")
然而,它并没有像预期的那样工作。
如果食品有库存,请先检查是否可以减去数量:
if food in stock:
if int(qty) > stock[food]:
print("There is no enough stock")
else:
stock[food] -= int(qty)
print(stock)
重要的事情先说:
input
是函数. 您必须使用()
来调用该函数。如果您执行input{...}
,将引发错误。
food = input("What was the food delivered: ")
qty = input(" Enter the quantity of the order: ")
然后,正如@Mark在评论中所说,您正在检查food
是否在stock
中。并且,elif
语句只执行如果if
求值为False
。因此,if food in stock
求值为False
,键在字典中不存在。然后在elif
:elif int(qty) > stock[food]:
中获取key:value
对,从而引发KeyError
。
下面是更正后的代码:
if food in stock:
if int(qty) < stock[food]:
stock[food] -= int(qty)
print(stock)
else:
print("There is no enough stock")
您的检查顺序不对。检查完食品是否有库存后,你应该检查一下数量。
if food in stock:
if int(qty) > stock[food]:
print("There is no enough stock")
else:
stock[food] -= int(qty)
print(stock)