Menu
CoddyTech

Rapor Oluştur

Coddy'nin GDScript Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 75 / 78.

challenge icon

Görev

Zor

Son olarak, aynı anda birkaç ürün satan ve geliri raporlayan sell komutunu ekle. Önceki adımlarda yazdığın her şeyi koru.

sell Apple:30 Banana:20 gibi bir satır, 30 elma ve 20 muz satar. sell komutundan sonraki her parça bir ürün adı, iki nokta üst üste ve bir miktardan oluşur; her ürün satırda en fazla bir kez yer alır.

sales_report(inventory, sales) fonksiyonunu _ready() fonksiyonunun üstüne yaz. sales, her ürün adını satılan miktara eşleyen bir sözlüktür. Her ürün için, sırayla:

  1. Ürün inventory içinde yoksa Error: Item 'Orange' not found. yazdır ve sonraki ürüne geç
  2. Stok miktarı, miktardan azsa Error: Insufficient stock for 'Apple'. yazdır ve sonraki ürüne geç
  3. Aksi hâlde, miktarı stoktan düş ve miktar ile fiyatın çarpımını gelire ekle

Fonksiyon, ardından gelirin iki ondalık basamakla gösterildiği Total revenue: $ metnini döndürür.

Döngüdeki sell dalı, komuttan sonraki parçalardan sales sözlüğünü oluşturur. İki nokta üst üste ile ayrılmış tam olarak bir ad ve bir tam sayıdan oluşmayan bir parça, Error: Invalid sale 'Apple-3'. yazdırır (o parçayla birlikte) ve atlanır. Ardından sales_report() fonksiyonunun döndürdüğü değeri yazdır.

add Apple 0.5 50, add Banana 0.2 60, sell Apple:30 Banana:20 Orange:10, show ve exit komutları için çıktı şöyledir:

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!

Kendin dene

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():
	# Envanter: ürün adı -> {"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")

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online GDScript derleyicisi