Menu
CoddyTech

מילונים מקוננים

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-GDScript של Coddy. שיעור 19 מתוך 78.

ערך במילון יכול להיות מילון אחר. מילון מקונן מקבץ נתונים קשורים: המפתחות החיצוניים מציינים את הרשומות, וכל מילון פנימי מכיל את השדות של רשומה אחת.

var heroes := {
	"Mia": {"hp": 100, "class": "mage"},
	"Leo": {"hp": 80, "class": "knight"}
}

שרשרו את המפתחות כדי להגיע לערך פנימי. heroes["Mia"] הוא המילון הפנימי של Mia, ו־["hp"] קורא ממנו. השמות פועלות באותו אופן:

print(heroes["Mia"]["hp"]) # 100
heroes["Leo"]["hp"] -= 30 # Leo סופג נזק
heroes["Mia"]["mana"] = 50 # מוסיף זוג ל-Mia בלבד
print(heroes["Mia"])
{ "hp": 100, "class": "mage", "mana": 50 }

כדי להוסיף רשומה שלמה, יש לשייך מילון למפתח חיצוני חדש: heroes["Ana"] = {"hp": 90, "class": "archer"}.

מפתח חסר בכל אחת מהרמות הוא שגיאה. כשייתכן שרשומה חסרה, יש לקרוא ל־get() עם מילון ריק כברירת מחדל, ואז לקרוא ל־get() שוב על התוצאה:

print(heroes.get("Zed", {}).get("hp", 0)) # 0

כדי להגיע לכל ערך פנימי, עברו בלולאה על המפתחות החיצוניים וקראו מכל מילון פנימי:

var total_hp := 0
for hero in heroes:
	total_hp += heroes[hero]["hp"]
print(total_hp) # 150
challenge icon

אתגר

קל

המילון המקונן inventory נתון: כל מפתח חיצוני הוא מחלקה, כל מפתח פנימי הוא פריט, וכל ערך פנימי הוא הכמות במלאי.

התוכנית קוראת שורה אחת: חיפושים הכתובים בתבנית department/item, ומופרדים בפסיקים. עבור כל חיפוש, לפי הסדר, יש להדפיס שורה אחת:

  • החיפוש, נקודתיים, רווח והכמות, כאשר הפריט נמצא במחלקה הזאת
  • החיפוש ואחריו : missing, כאשר המחלקה או הפריט אינם קיימים

לאחר מכן יש להדפיס Total inventory: ואחריו סכום כל הכמויות בכל המחלקות.

עבור הקלט fruits/apples,meat/beef,fruits/kiwis,candy/gum, הפלט הוא:

fruits/apples: 12
meat/beef: 7
fruits/kiwis: missing
candy/gum: missing
Total inventory: 39

נסו בעצמכם

extends Node

func _ready():
	var inventory := {
		"fruits": {"apples": 12, "bananas": 4},
		"meat": {"beef": 7, "chicken": 5},
		"dairy": {"milk": 9, "cheese": 2}
	}
	var lookups := OS.read_string_from_stdin().split(",")

	# הדפס את הכמות עבור כל ערך שמחפשים, או missing

	# הדפס את הסכום הכולל של כל הכמויות
	pass
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר GDScript אונליין