Menu
CoddyTech

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()) # 31

Cá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á 100

Cá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()) # kiwi

Quy 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 140

max() 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 :=.

challenge icon

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: kiwi

Tự 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
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