我是一个初级Python程序员,我正在尝试创建一个函数,允许用户购买3种不同的配料(“苹果”、“甜菜”和“胡萝卜”),每种配料1美元。我定义的函数将包含2个参数(配料名称和他们要购买的配料数量)。用户拥有的最大金额为20美元
iinventory={}
iinventory['apple']=0
iinventory['beets']=0
iinventory['carrots']=0
def buyingredient(ingredient_name,number: int):
total=20
while total > 0:
if number > total:
break
if number < total:
iinventory[ingredient_name] += number
total = total + number
iinventory.append(number))
我在如何开始真正的代码有困难,因为首先我必须确保他们购买的金额不超过他们的总金额($20)。另外,我也不知道如何把购买的金额放入一本字典里。我想我可以用append,但我想那只适用于列表而不是字典
然后,无论他们买多少苹果、甜菜或胡萝卜,都会反映在他们的总数上,并且会减少。 例如,如果他们买了3个苹果:
购买成分(“苹果”,3)
然后库存会显示他们有3个苹果,总共剩下17美元
iinventory={'苹果':3,'甜菜':0,'胡萝卜':0} 总计=17
现在不知道从这里到哪里去获取代码
试着跟踪你购买新原料时的花费,这样你就可以避免这种循环:
让我们试试看(忍受我,我要采取一点切线):
嘎
此操作失败,因为
total_spent
是在函数外部定义的。因此,通常认为让函数更新“活”在它们之外的变量是不好的做法——最好是返回一些内容(是的,更新iinventory
会起作用,但仍然被认为是不好的风格。)在这种情况下,你正在创建一些东西,但修改的次数不详——这是一个绝佳的机会去上课。让我们创建一个
GroceryBasket
来跟踪您的预算和您添加的项目:创建一个实例,指定您的预算:
加5个苹果:
现在是100根甜菜:
不管怎样,这可能比你想要的答案要多,但是我想加强你的函数,同时强调它要么返回一个值,要么更新传入对象的状态(在本例中是
self
),而不让你挂起。希望这有帮助(顺便说一句,如果你想知道
defaultdict
是什么,看看这些文档,它们相当不错。有一个例子显示了defaultdict(int)
和+=
操作符的用法(不太远:https://docs.python.org/3/library/collections.html#collections.defaultdict)相关问题 更多 >
编程相关推荐