Menu
CoddyTech

Tính tổng các giá trị

Thuộc phần Logic và luồng chương trình trong hành trình GDScript của Coddy. Bài học 49 trên 78.

GDScript không có hàm tích hợp sẵn để tính tổng một mảng. Bạn có thể cộng các giá trị bằng vòng lặp và một tổng lũy kế, tức là một biến bắt đầu từ 0 và tăng thêm theo từng giá trị:

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

Để cộng các giá trị vào một số tiền ban đầu, hãy bắt đầu tổng từ số tiền đó. Người chơi có 40 đồng xu trước khi qua màn sẽ kết thúc với 140 đồng xu:

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

Vòng lặp tương tự cộng các giá trị trong từ điển khi duyệt qua values(), và cộng một trường của từng từ điển trong mảng khi đọc trường đó:

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

Để tính tổng cho từng nhóm, hãy lưu các tổng trong một từ điển (dictionary). get() với giá trị mặc định là 0 sẽ xử lý trường hợp nhóm chưa có tổng:

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 }

Để tính giá trị trung bình, hãy chia tổng cho số lượng giá trị và chuyển sang float trước để giữ lại phần thập phân: float(total) / coins.size().

challenge icon

Thử thách

Dễ

Một cửa hàng muốn biết tổng số tiền trong két vào cuối ngày. Chương trình đọc hai dòng:

  1. Doanh thu trong ngày, gồm các số nguyên cách nhau bằng dấu cách. Dòng này để trống nếu không có giao dịch nào.
  2. Số tiền có trong két vào đầu ngày (một số nguyên).

Cộng từng khoản doanh thu vào số tiền ban đầu rồi in kết quả sau Total: . Với đầu vào 100 200 150 300 và 50, đầu ra là:

Total: 800

Tự làm thử

extends Node

func _ready():
	var sales := OS.read_string_from_stdin().split(" ", false)
	var starting_cash := int(OS.read_string_from_stdin())
	# Cộng từng khoản doanh thu vào số tiền ban đầu rồi in ra tổng số tiền
	pass
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Logic và luồng chương trình

Tự luyện tập: Trình biên dịch GDScript online