Суммирование значений
Часть раздела Логика и потоки выполнения путешествия по 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().
Задание
ЛегкоМагазину нужно узнать общую сумму денег в кассе в конце дня. Программа считывает две строки:
- Продажи за день — целые числа, разделённые пробелами. Если продаж не было, строка пустая.
- Деньги, которые были в кассе в начале дня (целое число).
Прибавь каждую продажу к начальной сумме и выведи результат после 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
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и потоки выполнения
1Строки: углублённое изучение
Методы строкПоиск в строкахЗамена и обрезка пробеловРазделение и объединениеПовторение — проверка имени пользователя4Словари. Часть 2
Вложенные словариМассивы словарейОбъединение словарейКопирование словарейПовторение — подсчёт частоты10Продвинутые функции
Возврат нескольких значенийЛямбда-функции. Часть 1Лямбда-функции. Часть 2Повторение — сортировка с помощью лямбда-функцииРекурсивные функции. Часть 1Рекурсивные функции. Часть 2Повторение — сумма вложенного массива13Система управления запасами
Обзор проектаДобавление товара2Продвинутое управление ветвлением
Сопоставление с переменнымиУсловия в шаблонахШаблоны массивовШаблоны словарейПроверка принадлежностиИтоги — парсер команд5Приложение «Телефонная книга»
Показать менюДобавить контакт8Менеджер успеваемости студентов
Обзор проектаДобавить студента3Многомерные массивы
Основы двумерных массивовДоступ к элементам двумерного массиваВложенные циклы с двумерными массивамиПовторение: двумерные массивыРваные массивыТипичные шаблоны работы с двумерными массивамиПовторение: игровое поле6Множества и словари
Что такое множество?Словарь как множествоДобавление и удалениеОбъединение и пересечениеРазность множествПовторение — удаление дубликатов9Расширенная агрегация данных
Суммирование значенийПоиск минимального и максимального значенийПользовательская сортировкаПовторение — сортировщик словарейПотренируйтесь самостоятельно: Онлайн-компилятор GDScript