Menu
CoddyTech

Суммирование значений

Часть раздела Логика и потоки выполнения путешествия по GDScript на Coddy. Урок 49 из 78.

В GDScript нет встроенной функции для суммирования массива. Чтобы сложить значения, используй цикл и накопительный итог — переменную, которая начинается с 0 и увеличивается на каждое значение:

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

Чтобы прибавить значения к начальному количеству, начни подсчёт с него. У игрока, у которого было 40 монет, после прохождения уровня будет 140:

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

Тот же цикл суммирует значения словаря, когда проходит по values(), и суммирует одно поле каждого словаря в массиве, когда считывает это поле:

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

Чтобы получить итог для каждой группы, храни итоги в словаре. get() со значением по умолчанию 0 учитывает группы, для которых итога ещё нет:

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 }

Чтобы найти среднее значение, раздели сумму на количество значений и сначала преобразуй её в float, чтобы сохранить дробную часть: float(total) / coins.size().

challenge icon

Задание

Легко

Магазину нужно узнать общую сумму денег в кассе в конце дня. Программа считывает две строки:

  1. Продажи за день — целые числа, разделённые пробелами. Если продаж не было, строка пустая.
  2. Деньги, которые были в кассе в начале дня (целое число).

Прибавь каждую продажу к начальной сумме и выведи результат после Total: . Для входных данных 100 200 150 300 и 50 вывод будет таким:

Total: 800

Попробуйте сами

extends Node

func _ready():
	var sales := OS.read_string_from_stdin().split(" ", false)
	var starting_cash := int(OS.read_string_from_stdin())
	# Прибавьте каждую продажу к начальной сумме денег и выведите итог
	pass
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и потоки выполнения

Потренируйтесь самостоятельно: Онлайн-компилятор GDScript