Tìm giá trị nhỏ nhất và lớn nhất
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 50 trên 78.
Mảng có các phương thức min() và max(), trả về phần tử nhỏ nhất và lớn nhất:
var temps := [18, 25, 9, 31, 22]
print(temps.min()) # 9
print(temps.max()) # 31Các hàm toàn cục min() và max() so sánh các số bạn truyền vào, rất tiện khi xử lý hai hoặc ba giá trị:
print(max(4, 12, 7)) # 12
var hp: int = min(120, 100) # 100, không bao giờ vượt quá 100Các chuỗi được so sánh từng ký tự một theo mã Unicode. Mọi chữ cái viết hoa đều đứng trước mọi chữ cái viết thường:
var words := ["kiwi", "apple", "Fig"]
print(words.min()) # Fig
print(words.max()) # kiwiQuy tắc tương tự cũng áp dụng cho các số được lưu dưới dạng văn bản: "9" lớn hơn "56", vì ký tự 9 đứng sau 5. Hãy chuyển đầu vào bằng int() trước khi so sánh các số.
Với mảng rỗng, cả hai phương thức đều trả về null. Để tìm vị trí của giá trị lớn nhất, hãy truyền giá trị đó vào find(): temps.find(temps.max()) trả về 3. Với từ điển, lấy giá trị lớn nhất rồi tìm khóa tương ứng bằng find_key(), hàm này trả về khóa đầu tiên có giá trị đó:
var scores := {"Mia": 120, "Leo": 95, "Ana": 140}
var best: int = scores.values().max()
print(scores.find_key(best), " ", best) # Ana 140max() trả về giá trị thuộc bất kỳ kiểu dữ liệu nào, vì vậy hãy khai báo kiểu dữ liệu của biến (var best: int) thay vì viết :=.
Thử thách
DễChương trình đọc hai dòng: các số nguyên được ngăn cách bằng dấu cách và các từ được ngăn cách bằng dấu cách. Mỗi dòng có ít nhất một giá trị.
In ra số nhỏ nhất và số lớn nhất, sau đó là từ nhỏ nhất và từ lớn nhất, bằng min() và max(). So sánh các số theo giá trị số, không phải dưới dạng văn bản. Với đầu vào 42 17 23 56 9 34 và kiwi apple banana cherry date, đầu ra là:
Smallest number: 9
Largest number: 56
Smallest word: apple
Largest word: kiwiTự làm thử
extends Node
func _ready():
var number_texts := OS.read_string_from_stdin().split(" ", false)
var words := Array(OS.read_string_from_stdin().split(" ", false))
# Chuyển các số sang int, rồi in ra bốn kết quả
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