אימות קלט
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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()) # falseis_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)אתגר
קלהתוכנית קוראת שורת קלט אחת. בדוק אותה לפני ההמרה:
- אם זה מספר שלם, הדפס
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
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
2קבלת החלטות מתקדמת
התאמה עם משתניםתנאי סף להתאמהתבניות מערכיםתבניות מילוניםבדיקות חברותסיכום – מנתח פקודות5אפליקציית ספר אנשי קשר
הצגת התפריטהוספת איש קשר8מנהל רשומות תלמידים
סקירת הפרויקטהוספת תלמידתרגלו בעצמכם: קומפיילר GDScript אונליין