קורס Python 3 שיעור תרגול תחביר המחלקות


זהו נושא דיון מלווה לערך המקורי שב־https://www.tocode.co.il/bundles/28/lessons/21-class-syntax-lab

היי ינון,
לגבי תרגיל 4, איך מפנים לפונקציה על סמך קלט?
בעת הפעלת התוכנית המערכת תחכה לתגובה - כלומר אם יצרתי מחלקת תור ואני מעוניינת לרשום לדוגמא
wait dave mika. אבל שהפונקציה תהיה wait והקלט אליה יהיה המשך השורה. אבל אני לא מעוניינת לרשום
wait(dave, mika) אלא ממש כאילו זו פקודה ומשם להמשיך - איך אני מתחילה?

בואי נתחיל ממה שיש לנו ביד - זה יהיה מחרוזת למשל:

"wait dave mika"

אפילו אפשר בשביל המשחק לפני שמתחילים לענות על התרגיל לכתוב את המחרוזת הזאת לתוך משתנה ולנסות להתקדם עם זה:

command = "wait dave mika"

חוץ מזה יש לנו גם פונקציה - wait, שיכולה לקבל פרמטרים. אני לא בטוח מה היא עושה אז בינתיים משאיר אותה ריקה:

def wait(clerk, person):
  pass

command = "wait dave mika"

ואנחנו כבר בחצי הדרך :slight_smile:

עכשיו צריך לשאול - איך מתוך השורה ב command אפשר להפעיל את הפונקציה עם הקלט הנכון?

התשובה היא שצריך לפצל את השורה למילים ואז נוכל להשתמש במילים האלה: המילה הראשונה היא שם הפונקציה, המילה השניה שם הפקיד והמילה השלישית היא שם הבן אדם שמחכה.

בפייתון הפקודה split לוקחת מחרוזת ושוברת אותה למילים, אז אני יכול לכתוב בהמשך לתוכנית מקודם:

words = command.split()

ואז להשתמש בשלושת המשתנים החדשים שלי:

function_name = words[0]
if function_name == "wait":
  clerk = words[1]
  person = words[2]
  wait(clerk, person)

בשיעור כאן אני מראה כמה טריקים יותר מתוחכמים כדי לתפוס את כל המילים למערך אחד ולשלוח אותם ישר מהמערך לפונקציה wait. אחרי שתסיימי את התרגיל תוכלי להעיף מבט גם שם:
https://www.tocode.co.il/bundles/advanced-python3/lessons/variadic-functions