如果您曾經玩過Minecraft,以下將會更有意義。由於你們許多人都沒有,我會盡力盡我所能解釋它Python遞歸數據讀取
我想寫一個遞歸函數,可以找到從minecraft的食譜平面文件製作任何我的世界物品的步驟。這一個讓我真的很難過。
Flatfile有點長,所以我把它包含在this的要點中。
def getRecipeChain(item, quantity=1):
#magic recursive stuffs go here
所以基本上我需要查找第一個配方,然後查找配方爲第一個配方的所有組件,並以此類推,直到你到了沒有食譜的項目。每次我需要追加的配方列表,所以我得到一種指令集按什麼順序手工藝品。
因此,這裏是我現在有功能(一個不工作)
def getRecipeChain(name, quantity=1):
chain = []
def getRecipe(name1, quantity1=1):
if name1 in recipes:
for item in recipes[name1]["ingredients"]["input"]:
if item in recipes:
getRecipe(item, quantity1)
else:
chain.append(item)
getRecipe(name, quantity)
return chain
這是我要做的理想輸出。這是一個字典,其中存儲了項目名稱和數量。
>>> getRecipeChain("solar_panel", 1):
{"insulated_copper_cable":13, "electronic_circuit":2, "re_battery":1, "furnace":1, "machine":1, "generator":1, "solar_panel":1}
所以問題是,我該怎麼做呢?
我知道要求人們爲你做的工作在這裏皺起了眉頭,所以如果你覺得這與你有點太接近,只是爲我編碼,就這麼說吧。
只是說,但我覺得你的樣本輸出是不正確的...... – PearsonArtPhoto 2012-03-07 00:13:36
以何種方式是不正確的? – giodamelio 2012-03-07 00:15:44
那麼,insulated_copper_cable不是一個基礎項目,是嗎? electronic_circuit也不是。看來你想要的基礎成分,而不是複雜的。 – PearsonArtPhoto 2012-03-07 00:20:09