Menu
CoddyTech

查找最小值和最大值

本课属于 Coddy GDScript 学习旅程的“逻辑与流程”单元。第 50 课,共 78 课。

数组有 min() 和 max() 方法,分别返回最小和最大的元素:

var temps := [18, 25, 9, 31, 22]
print(temps.min()) # 9
print(temps.max()) # 31

全局函数 min() 和 max() 会比较你传入的数字,用来处理两个或三个值很方便:

print(max(4, 12, 7)) # 12
var hp: int = min(120, 100) # 100,绝不会超过 100

字符串会按字符逐个比较,依据的是它们的 Unicode 编码。每个大写字母都排在每个小写字母之前:

var words := ["kiwi", "apple", "Fig"]
print(words.min()) # Fig
print(words.max()) # kiwi

同样的规则也适用于以文本形式存储的数字:"9" 大于 "56",因为字符 9 排在 5 后面。比较数字前,先用 int() 转换输入。

对于空数组,这两种方法都会返回 null。要查找最大值所在的位置,把它传给 find():temps.find(temps.max()) 的结果是 3。对于字典,先找出其中最大的值,再用 find_key() 查找它对应的键。该方法会返回第一个值与之相同的键:

var scores := {"Mia": 120, "Leo": 95, "Ana": 140}
var best: int = scores.values().max()
print(scores.find_key(best), " ", best) # Ana 140

max() 会返回任意类型的值,因此要声明变量的类型(var best: int),而不是写 :=。

challenge icon

挑战

简单

程序会读取两行内容:一行是用空格分隔的整数,另一行是用空格分隔的单词。每行至少包含一个值。

使用 min() 和 max(),依次输出最小的数字、最大的数字、最小的单词和最大的单词。比较数字时要按数字比较,而不是按文本比较。对于输入 42 17 23 56 9 34 和 kiwi apple banana cherry date,输出为:

Smallest number: 9
Largest number: 56
Smallest word: apple
Largest word: kiwi

亲手试试

extends Node

func _ready():
	var number_texts := OS.read_string_from_stdin().split(" ", false)
	var words := Array(OS.read_string_from_stdin().split(" ", false))
	# 把数字转换为 int,然后打印四个结果
	pass
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: GDScript 在线编译器