Menu
CoddyTech

値の合計

CoddyのGDScriptジャーニー「ロジックとフロー」セクションの一部。レッスン 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

グループごとの合計を求めるには、合計値を辞書に保存します。デフォルト値に 0 を指定した get() を使うと、まだ合計値がないグループにも対応できます。

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行を読み取ります。

  1. その日の売上。スペースで区切られた整数です。売上がなかった場合、この行は空です。
  2. 1日の開始時にレジにあった現金(整数)。

すべての売上を開始時の現金に加算し、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オンラインコンパイラ