Menu
CoddyTech

Somando Valores

Parte da seção Lógica e fluxo do Journey de GDScript da Coddy. Lição 49 de 78.

GDScript não tem uma função integrada que some os valores de um array. Você soma os valores com um loop e um total acumulado, uma variável que começa em 0 e aumenta com cada valor:

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

Para adicionar os valores a uma quantia inicial, comece o total com essa quantia. Um jogador que tinha 40 moedas antes termina o nível com 140:

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

O mesmo loop soma os valores de um dicionário quando percorre values() e soma um campo de cada dicionário em um array quando lê esse 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 obter um total por grupo, mantenha os totais em um dicionário. get() com o valor padrão 0 cobre um grupo que ainda não tem um 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 uma média, divida o total pelo número de valores e converta primeiro para float para manter as casas decimais: float(total) / coins.size().

challenge icon

Desafio

Fácil

Uma loja quer saber o total no caixa no fim do dia. O programa lê duas linhas:

  1. As vendas do dia, números inteiros separados por espaços. A linha fica vazia quando não há vendas.
  2. O dinheiro que estava no caixa no início do dia (um número inteiro).

Addicione cada venda ao dinheiro inicial e imprima o resultado após Total: . Para as entradas 100 200 150 300 e 50, a saída é:

Total: 800

Experimente você mesmo

extends Node

func _ready():
	var sales := OS.read_string_from_stdin().split(" ", false)
	var starting_cash := int(OS.read_string_from_stdin())
	# Some cada venda ao dinheiro inicial e imprima o total
	pass
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e fluxo

Pratique por conta própria: Compilador de GDScript online