Menu
CoddyTech

אימות קלט

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-GDScript של Coddy. שיעור 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()) # false

is_valid_float() עושה את אותו הדבר עבור מספרים עשרוניים. הוא מקבל גם מספרים שלמים, כי 5 הוא float תקין:

print("3.14".is_valid_float()) # אמת
print("5".is_valid_float()) # אמת
print("five".is_valid_float()) # שקר

רווחים נספרים כתווים: " 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)
challenge icon

אתגר

קל

התוכנית קוראת שורת קלט אחת. בדוק אותה לפני ההמרה:

  • אם זה מספר שלם, הדפס 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
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר GDScript אונליין