因此,我的懒惰的后方正在尝试在python3.x中创建一个膳食计划生成器,这样我就不必每周五花30分钟来弄清楚我应该吃什么,但我对编码和一些东西还不熟悉。我仍在学习Udemy课程,但我想用代码来正确地学习。不管怎样,到目前为止我得到的是:
class Meals():
def __init__(self,breakfast,lunch,dinner):
self.breakfast=breakfast
self.lunch=lunch
self.dinner=dinner
def __str__(self):
return f"Breakfast will be {self.breakfast}.\nLunch will be {self.lunch}.\nDinner will be {self.dinner}."
def cost(self):
day_meals=[self.breakfast,self.lunch,self.dinner]
day_cost=0
for i in day_meals:
for ingredient in i:
for key,value in Shop2.items():
if key in ingredient:
day_cost+=value
return f"Today will cost £{round(day_cost,2)}."
如果我这样做了:
monday_meals=Meals(random.choice(list(breakfasts.keys())),random.choice(list(lunches.keys())),random.choice(list(dinners.keys())))
然后调用monday\u Diems.breakfast,然后我得到我想要的结果,从“早餐”字典中随机选择的键,但是每当我调用: 星期一餐费() 然后我得到£0,未显示错误
作为参考,我的测试词典如下:
breakfasts={"a bowl of Rice Crispies":["cereal_1","milk"],"Weetabix":["cereal_2","milk"],"some Golden Grahams":["cereal_3","milk"],"toast":["bread","butter"],"scrambled eggs":["egg","egg","milk"]}
lunches={"cereal bars":["cereal_bar","cereal_bar"],"a boring ham sandwich":["bread","ham"],"some fruit":["banana","apple"],"salad":"salad_bag"}
dinners={"Student Meal #1":["mince","red_sauce","pepper","onion"],"Student Meal #2":["c_breast","white_sauce","onion","pepper"],"Student Meal #3":["egg","pepper","tomato","onion"]}
Shop2={"egg":0.3,"tomato":0.35,"pepper":0.33,"onion":0.4,"mince":1.2,"c_breast":0.7,"rice":0.8,"red_sauce":1.4,"white_sauce":1.5,"cereal_1":0.4,"milk":0.13,"cereal_2":0.35,"cereal_3":0.45,"bread":0.04,"butter":0.04,"cereal_bar":0.75,"ham":0.25,"banana":0.3,"apple":0.3,"salad":0.75}
如果能帮我找到一个更简单的方法来计算一天的餐费,我将不胜感激
您可以通过以下方式实现您的设计:
然后:
问题在于实例化类时传入的内容
breakfasts.keys()
只给你dict的键,顾名思义:键是冒号左边的东西,例如“一碗米饭脆”。实际的配料是值,但这些永远不会发送到用餐实例;所以当你遍历“成分”时,你实际上是在遍历键的字母您可以通过使用
.values()
而不是.keys()
来解决这个问题,尽管更好的方法可能是同时传递键和值,以便__str__
方法输出描述,而不是成分;我把它作为练习正在使用餐食的字符串名称初始化您的餐食对象(例如,随机选择早餐。keys()可能是“Weetabix”)
当你在一日三餐中反复使用“i中的配料”时,你实际上是在反复使用维他麦的每个“字符”,所以你的配料应该是“W”“e”“e”。。等等
相反,您可能希望通过选择breakfasts.items()来初始化膳食。然后你会有一个元组,例如(“维他麦”,“谷类2”,“牛奶”),在自助早餐
然后可以在循环中解包:
相关问题 更多 >
编程相关推荐