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) # 140Vò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().
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:
- 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.
- 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: 800Tự 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
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
1Chuyên sâu về chuỗi
Các phương thức của chuỗiTìm kiếm trong chuỗiThay thế và xóa khoảng trắngTách và nốiÔn tập: Kiểm tra tên người dùng7Kiểu liệt kê
Kiểu liệt kê là gì?Định nghĩa kiểu liệt kêCác giá trị của kiểu liệt kêKiểu liệt kê trong matchÔn tập: đèn giao thông10Hàm nâng cao
Trả về nhiều giá trịHàm lambda phần 1Hàm lambda phần 2Ôn tập: sắp xếp bằng lambdaHàm đệ quy phần 1Hàm đệ quy phần 2Ôn tập: tính tổng mảng lồng nhau13Hệ thống quản lý hàng tồn kho
Tổng quan dự ánThêm mặt hàng2Ra quyết định nâng cao
So khớp với biếnĐiều kiện bảo vệ trong so khớpMẫu mảngMẫu từ điểnKiểm tra thành viênÔn tập: Bộ phân tích lệnh5Ứng dụng sổ liên lạc
Hiển thị menuThêm liên hệ8Trình quản lý hồ sơ học sinh
Tổng quan dự ánThêm học sinh3Mảng nhiều chiều
Cơ bản về mảng 2 chiềuTruy cập phần tử trong mảng 2 chiềuVòng lặp lồng nhau với mảng 2 chiềuÔn tập: mảng 2 chiềuMảng răng cưaCác mẫu phổ biến với mảng 2 chiềuÔn tập: bàn cờ6Tập hợp với từ điển
Tập hợp là gì?Từ điển như một tập hợpThêm và xóaHợp và giaoHiệu tập hợpÔn tập: Xóa phần tử trùng lặp9Tổng hợp dữ liệu nâng cao
Tính tổng các giá trịTìm giá trị nhỏ nhất và lớn nhấtSắp xếp tùy chỉnhÔn tập: Sắp xếp từ điểnTự luyện tập: Trình biên dịch GDScript online