Sau đây sẽ có ý nghĩa hơn nếu bạn đã từng chơi minecraft. Vì nhiều người trong số các bạn không có, tôi sẽ cố gắng giải thích tốt nhất là tôi có thểĐọc dữ liệu đệ quy của Python
Tôi đang cố gắng viết một hàm đệ quy có thể tìm các bước để tạo bất kỳ vật phẩm Minecraft nào từ flatfile công thức minecraft. Điều này khiến tôi thực sự bối rối.
Tệp phẳng là khá dài vì vậy tôi đã bao gồm nó trong this Gist.
def getRecipeChain(item, quantity=1):
#magic recursive stuffs go here
Vì vậy, về cơ bản tôi cần phải tìm kiếm các công thức nấu ăn đầu tiên sau đó tìm kiếm các công thức nấu ăn cho tất cả các thành phần của công thức mà đầu tiên và vân vân cho đến khi bạn nhận được để các mặt hàng không có công thức nấu ăn. Mỗi lần tôi cần phải thêm các công thức vào một danh sách vì vậy tôi có được một loại tập lệnh của những gì để mục nghề trong.
Vì vậy, đây là chức năng tôi có bây giờ (một trong những không làm việc)
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
Đây là sản lượng lý tưởng mà tôi đang sử dụng. Nó là một từ điển với tên mục và số lượng được lưu trữ trong đó.
>>> getRecipeChain("solar_panel", 1):
{"insulated_copper_cable":13, "electronic_circuit":2, "re_battery":1, "furnace":1, "machine":1, "generator":1, "solar_panel":1}
Câu hỏi đặt ra là, làm cách nào để thực hiện?
Tôi biết yêu cầu mọi người làm việc cho bạn được cau mày ở đây, vì vậy nếu bạn cảm thấy điều này hơi quá gần với bạn chỉ cần viết mã cho tôi, hãy nói như vậy.
Chỉ cần nói, nhưng tôi nghĩ ra mẫu của bạn là không đúng ... – PearsonArtPhoto
Bằng cách nào là nó không chính xác? – giodamelio
Vâng, insulated_copper_cable không phải là một mục cơ sở, phải không? Cũng không phải là electronic_circuit. Có vẻ như bạn muốn lấy các thành phần cơ bản, không phải là những nguyên liệu phức tạp. – PearsonArtPhoto