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. 一天开始时收银机里的现金(一个整数)。

将每笔销售额加到初始现金中,并在 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 在线编译器