Menu
CoddyTech

Vérifier la disponibilité

Fait partie de la section Logique et flux d’exécution du Journey GDScript de Coddy. Leçon 74 sur 78.

challenge icon

Défi

Facile

Ajoutez la commande check. Conservez tout ce que vous avez écrit dans les étapes précédentes.

Écrivez la fonction check_availability(inventory, item) au-dessus de _ready(). Elle n’affiche rien et renvoie un int :

  • le stock de l’article, lorsque celui-ci se trouve dans inventory
  • -1 lorsque l’article est absent. Un stock n’est jamais négatif, donc -1 peut uniquement signifier "not found".

Dans la boucle, une ligne comme check Apple :

  • affiche Error: Use check ITEM lorsqu’elle ne contient pas exactement 2 parties
  • sinon, appelle check_availability() et affiche Item not found pour -1, ou le nom de l’article, : , le stock et in stock

Pour les commandes add Apple 0.5 100, add Banana 0.2 50, update Apple -20, update Banana 30, check Apple, check Banana, check Orange et exit, la sortie est :

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!

Essayez vous-même

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'inventaire : nom de l'article -> {"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")

Toutes les leçons de Logique et flux d’exécution

Entraînez-vous par vous-même : Compilateur GDScript en ligne