验证输入
本课属于 Coddy GDScript 学习旅程的“逻辑与流程”单元。第 67 课,共 78 课。
输入以文本形式传入,而 int() 会直接转换任何文本,不会报错。如果文本不是整数,你得到的会是错误的值,而不是错误:
print(int("abc")) # 0
print(int("12abc")) # 12
print(int("3.14")) # 3所以要先检查文本,再进行转换。is_valid_int() 会在整段文本是整数时返回 true:
print("42".is_valid_int()) # true
print("-15".is_valid_int()) # true
print("3.14".is_valid_int()) # false
print("abc".is_valid_int()) # false
print("".is_valid_int()) # falseis_valid_float() 对小数执行相同的检查。它也接受整数,因为 5 是有效的 float:
print("3.14".is_valid_float()) # true
print("5".is_valid_float()) # true
print("five".is_valid_float()) # false空格也算作字符:" 99 ".is_valid_int() 的结果是 false。如果输入周围可能有空格,请先调用 strip_edges()。
有效的数字仍可能是错误的值。转换后,检查它是否在程序允许的范围内:
var text := OS.read_string_from_stdin()
if not text.is_valid_int():
print("Please enter a whole number")
else:
var age := int(text)
if age < 0 or age > 120:
print("Age must be between 0 and 120")
else:
print("Age: ", age)挑战
简单程序会读取一行输入。转换之前先检查它:
- 如果它是整数,打印
You entered:,后面接上这个数 - 否则,打印
Invalid input! Please enter a valid number.
输入 42 时,输出为:
You entered: 42输入 abc 和 3.14 时,输出为:
Invalid input! Please enter a valid number.打印转换后的数字,而不是文本:输入 007 时,输出为 You entered: 7。
亲手试试
extends Node
func _ready():
var user_input := OS.read_string_from_stdin()
# 检查输入,然后输出数字或错误信息
pass
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
逻辑与流程中的所有课
自己练习: GDScript 在线编译器