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")) # 3Vì 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()) # saiis_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()) # saiDấ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)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: 42Vớ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
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ển12Xử lý lỗi cơ bản
Xử lý lỗi là gì?Xác thực đầu vàoMệnh đề bảo vệTrả về mã lỗiÔn tập: phép chia an toànTự luyện tập: Trình biên dịch GDScript online