Menu
CoddyTech

Xác thực đầu vào

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 67 trên 78.

Đầu vào đến dưới dạng văn bản, và int() chuyển đổi mọi văn bản mà không báo lỗi. Khi văn bản không phải là số nguyên, bạn nhận được một giá trị sai thay vì lỗi:

print(int("abc")) # 0
print(int("12abc")) # 12
print(int("3.14")) # 3

Vì vậy, hãy kiểm tra văn bản trước khi chuyển đổi. is_valid_int() trả về true khi toàn bộ văn bản là một số nguyên:

print("42".is_valid_int()) # đúng
print("-15".is_valid_int()) # đúng
print("3.14".is_valid_int()) # sai
print("abc".is_valid_int()) # sai
print("".is_valid_int()) # sai

is_valid_float() cũng làm điều tương tự với số thập phân. Hàm này cũng chấp nhận số nguyên, vì 5 là một float hợp lệ:

print("3.14".is_valid_float()) # đúng
print("5".is_valid_float()) # đúng
print("five".is_valid_float()) # sai

Dấu cách cũng được tính là ký tự: " 99 ".is_valid_int() trả về false. Gọi strip_edges() trước nếu đầu vào có thể có dấu cách ở hai bên.

Một số hợp lệ vẫn có thể là giá trị không đúng. Sau khi chuyển đổi, hãy kiểm tra xem giá trị đó có nằm trong phạm vi mà chương trình cho phép không:

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)
challenge icon

Thử thách

Dễ

Chương trình đọc một dòng đầu vào. Hãy kiểm tra dòng đó trước khi chuyển đổi:

  • Nếu đó là số nguyên, hãy in ra You entered: rồi đến số đó
  • Nếu không, hãy in ra Invalid input! Please enter a valid number.

Với đầu vào 42, đầu ra là:

You entered: 42

Với các đầu vào abc và 3.14, đầu ra là:

Invalid input! Please enter a valid number.

Hãy in ra số đã chuyển đổi, không phải văn bản: với đầu vào 007, đầu ra là You entered: 7.

Tự làm thử

extends Node

func _ready():
	var user_input := OS.read_string_from_stdin()

	# Kiểm tra đầu vào (input), rồi in ra (print) số hoặc thông báo lỗi (error).
	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