Menu
CoddyTech

Verificare la disponibilità

Fa parte della sezione Logica e flusso del percorso GDScript di Coddy. Lezione 74 di 78.

challenge icon

Sfida

Facile

Aggiungi il comando check. Mantieni tutto ciò che hai scritto nei passaggi precedenti.

Scrivi la funzione check_availability(inventory, item) sopra _ready(). Non stampa nulla e restituisce un int:

  • la scorta dell'articolo, quando l'articolo è in inventory
  • -1 quando l'articolo non è presente. La scorta non è mai negativa, quindi -1 può significare solo "not found".

Nel ciclo, una riga come check Apple:

  • stampa Error: Use check ITEM quando non contiene esattamente 2 parti
  • altrimenti chiama check_availability() e stampa Item not found per -1, oppure il nome dell'articolo, : , la scorta e in stock

Per i comandi add Apple 0.5 100, add Banana 0.2 50, update Apple -20, update Banana 30, check Apple, check Banana, check Orange e exit, l'output è:

Inventory Management System
Item 'Apple' added successfully.
Item 'Banana' added successfully.
Stock for 'Apple' updated successfully.
Stock for 'Banana' updated successfully.
Apple: 80 in stock
Banana: 80 in stock
Item not found
Goodbye!

Provalo tu

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 _ready():
	# L'inventario: nome dell'articolo -> {"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]))
		else:
			print("Unknown command")

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore GDScript online