Menu
CoddyTech

Suma de valores

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

GDScript no tiene una función integrada que sume los elementos de un array. Sumas los valores con un bucle y un total acumulado, una variable que empieza en 0 y aumenta con cada valor:

var coins := [12, 30, 8, 50]
var total := 0
for amount in coins:
	total += amount
print(total) # 100

Para sumar los valores a una cantidad inicial, inicia el total con esa cantidad. Un jugador que tenía 40 monedas antes del nivel termina con 140:

var total := 40
for amount in coins:
	total += amount
print(total) # 140

El mismo bucle suma los valores de un diccionario al recorrer values(), y suma un campo de cada diccionario de un arreglo cuando lee ese campo:

var inventory := {"potion": 3, "arrow": 20, "bomb": 2}
var items := 0
for count in inventory.values():
	items += count
print(items) # 25

var party := [{"hero": "Mia", "hp": 80}, {"hero": "Leo", "hp": 65}]
var party_hp := 0
for member in party:
	party_hp += member["hp"]
print(party_hp) # 145

Para obtener un total por grupo, guarda los totales en un diccionario. get() con el valor predeterminado 0 cubre el caso de un grupo que todavía no tiene un total:

var loot := [["gold", 10], ["gems", 2], ["gold", 25]]
var totals := {}
for drop in loot:
	totals[drop[0]] = totals.get(drop[0], 0) + drop[1]
print(totals) # { "gold": 35, "gems": 2 }

Para calcular el promedio, divide el total entre la cantidad de valores y conviértelo primero a float para conservar los decimales: float(total) / coins.size().

challenge icon

Desafío

Fácil

Una tienda quiere conocer el total de dinero en su caja registradora al final del día. El programa lee dos líneas:

  1. Las ventas del día, números enteros separados por espacios. La línea está vacía si no hubo ventas.
  2. El dinero que había en la caja registradora al inicio del día (un número entero).

Suma cada venta al dinero inicial e imprime el resultado después de Total: . Para las entradas 100 200 150 300 y 50, la salida es:

Total: 800

Pruébalo tú mismo

extends Node

func _ready():
	var sales := OS.read_string_from_stdin().split(" ", false)
	var starting_cash := int(OS.read_string_from_stdin())
	# Suma cada venta al dinero inicial e imprime el total
	pass
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y flujo

Practica por tu cuenta: Compilador de GDScript online