Menu
CoddyTech

Comprobar disponibilidad

Parte de la sección Lógica y flujo del Journey de GDScript de Coddy. Lección 74 de 78.

challenge icon

Desafío

Fácil

Añade el comando check. Conserva todo lo que escribiste en los pasos anteriores.

Escribe la función check_availability(inventory, item) encima de _ready(). No imprime nada y devuelve un int:

  • las existencias del artículo, cuando el artículo está en inventory
  • -1 cuando falta el artículo. Las existencias nunca son negativas, así que -1 solo puede significar "not found".

En el bucle, una línea como check Apple:

  • imprime Error: Use check ITEM cuando no tiene exactamente 2 partes
  • de lo contrario, llama a check_availability() e imprime Item not found para -1, o el nombre del artículo, : , las existencias y in stock

Para los comandos add Apple 0.5 100, add Banana 0.2 50, update Apple -20, update Banana 30, check Apple, check Banana, check Orange y exit, la salida es:

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!

Pruébalo tú mismo

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():
	# El inventario: nombre del artículo -> {"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")

Todas las lecciones de Lógica y flujo

Practica por tu cuenta: Compilador de GDScript online