הפקת דוח
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-GDScript של Coddy. שיעור 75 מתוך 78.
אתגר
קשהלבסוף, הוסף את הפקודה sell, שמוכרת כמה פריטים בבת אחת ומדווחת על ההכנסה. השאר את כל מה שכתבת בשלבים הקודמים.
שורה כמו sell Apple:30 Banana:20 מוכרת 30 תפוחים ו-20 בננות. כל חלק אחרי sell מורכב משם פריט, נקודתיים וכמות, וכל פריט מופיע לכל היותר פעם אחת בשורה.
כתוב את הפונקציה sales_report(inventory, sales) מעל _ready(). sales הוא מילון שממפה כל שם פריט לכמות שנמכרה. עבור כל פריט, לפי הסדר:
- אם הפריט לא נמצא ב-
inventory, הדפסError: Item 'Orange' not found.והמשך לפריט הבא - אם המלאי שלו קטן מהכמות, הדפס
Error: Insufficient stock for 'Apple'.והמשך לפריט הבא - אחרת, הפחת את הכמות מהמלאי והוסף להכנסה את מכפלת הכמות במחיר
הפונקציה מחזירה את הטקסט Total revenue: $ ואחריו ההכנסה עם שתי ספרות אחרי הנקודה העשרונית.
בלולאה, הענף של sell בונה את מילון sales מהחלקים שאחרי הפקודה. אם חלק אינו מורכב בדיוק משם וממספר שלם המופרדים באמצעות :, הדפס Error: Invalid sale 'Apple-3'. (עם אותו חלק) ודלג עליו. לאחר מכן, הדפס את מה ש-sales_report() מחזירה.
עבור הפקודות add Apple 0.5 50, add Banana 0.2 60, sell Apple:30 Banana:20 Orange:10, show ו-exit, הפלט הוא:
Inventory Management System
Item 'Apple' added successfully.
Item 'Banana' added successfully.
Error: Item 'Orange' not found.
Total revenue: $19.00
{ "Apple": { "price": 0.5, "stock": 20 }, "Banana": { "price": 0.2, "stock": 40 } }
Goodbye!נסו בעצמכם
extends Node
func add_item(inventory: Dictionary, item: String, price: float, stock: int) -> void:
if inventory.has(item):
print("Error: Item '%s' already exists." % item)
return
inventory[item] = {"price": price, "stock": stock}
print("Item '%s' added successfully." % item)
func update_stock(inventory: Dictionary, item: String, quantity: int) -> void:
if not inventory.has(item):
print("Error: Item '%s' not found." % item)
return
var new_stock: int = inventory[item]["stock"] + quantity
if new_stock < 0:
print("Error: Insufficient stock for '%s'." % item)
return
inventory[item]["stock"] = new_stock
print("Stock for '%s' updated successfully." % item)
func check_availability(inventory: Dictionary, item: String) -> int:
if not inventory.has(item):
return -1
return inventory[item]["stock"]
func _ready():
# המלאי: שם הפריט -> {"price": float, "stock": int}
var inventory := {}
print("Inventory Management System")
while true:
var line := OS.read_string_from_stdin()
var parts := line.split(" ")
var command := parts[0]
if command == "exit":
print("Goodbye!")
break
elif command == "show":
print(inventory)
elif command == "add":
if parts.size() != 4:
print("Error: Use add ITEM PRICE STOCK")
elif not parts[2].is_valid_float() or not parts[3].is_valid_int():
print("Error: Price and stock must be numeric.")
else:
add_item(inventory, parts[1], float(parts[2]), int(parts[3]))
elif command == "update":
if parts.size() != 3:
print("Error: Use update ITEM QUANTITY")
elif not parts[2].is_valid_int():
print("Error: Quantity must be an integer.")
else:
update_stock(inventory, parts[1], int(parts[2]))
elif command == "check":
if parts.size() != 2:
print("Error: Use check ITEM")
else:
var stock := check_availability(inventory, parts[1])
if stock == -1:
print("Item not found")
else:
print(parts[1], ": ", stock, " in stock")
else:
print("Unknown command")
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
2קבלת החלטות מתקדמת
התאמה עם משתניםתנאי סף להתאמהתבניות מערכיםתבניות מילוניםבדיקות חברותסיכום – מנתח פקודות5אפליקציית ספר אנשי קשר
הצגת התפריטהוספת איש קשר8מנהל רשומות תלמידים
סקירת הפרויקטהוספת תלמידתרגלו בעצמכם: קומפיילר GDScript אונליין