לא להגשה אבל משגע אותי כבר יממה

תרגול : כתבו פונקציה שמקבלת שני מספרים ומחזירה את הגדול מביניהם.
רוצים אתגר? פתרו את התרגיל ב־4 שורות.

עזרה מישהו?

2 לייקים

אני אנסה לתת רמז דק בתקווה שזה יספיק.
שים לב שאם מחזירים ערך, כלומר מבצעים return, ריצת הפונקציה נגמרת מיד לאחר ההחזרה, לא משנה כמה שורות קוד כתובות לאחר מכן (כל עוד הן בתוך הפונקציה כמובן).

לייק 1

מסוג הדברים שנפל לי האסימון אליהם קצת אחרי שהגשתי.
תנסי לחשוב איך את מצמצת את החצי השני של התנאי.

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

אתה מתכוון לפתור ב-4 שורות או לפתור בכללי?

לא מבין עד הסוף את עניין הפונקציות… אז אשמח לפתור את זה בכללי… ואחרי זה ב-4 שורות…

יודע לשים את האצבע על מה אתה לא מבין בפונקציות?


גם אותי זה משגע יום שלם, מה אני עושה לא בסדר ?? :frowning:

יש כמה בעיות, אשמח לעזור בפרטי כדי לא לספיילר לאנשים בפורום :slight_smile:

לייק 1

אני מבין שמגדירים. אבל מתי קוראים? מתי return? האם התנאי בתוך הפונקציה או בחוץ? בקיצור - קראתי מספר פעמים את המחברות וזה ממש לא ברור… ואני לא יכול לעשות שום תרגיל להגשה במחברת שלוש עד שזה לא יהיה ברור… :confused:

  • מתי קוראים לפונקציה? כשרוצים להשתמש בה. למשל, ניתן להגדיר פונקציה של העלאה בחזקה. אתה תקרא לה כשתרצה לבדוק האם משולש הוא ישר זווית, אבל אתה כנראה לא תקרא לה כשתרצה לבדוק מי המחרוזת הארוכה מבין השלוש שניתנו לך כקלט. לרוב אתה תגדיר פונקציות במטרה להשתמש בהן רגע לאחר מכן בהקשר אחר.

  • מתי return? כשרוצים להחזיר ערך למי שקרא לך ולא רק להדפיס למסך. למה זה טוב? כי ייתכן שהפונקציה שלך עושה חישוב ביניים שאתה רוצה להמשיך לבצע ואתה לא רוצה שהיא תדפיס את התוצאה למסך ושאתה תצטרך לחפש אותה שם ולהזין אותה ידנית להמשך החישוב. אני בטוחה שאם תרצה לבדוק האם a^2+b^2=c^2 לא תתלהב מלשלוח את a, b ו-c לפונקציית העלאת בחזקה שמדפיסה לך את תשובת ההעלאה בחזקה למסך ושתצטרך לגלות מה היא הדפיסה למה ואז להכניס בעצמך למשוואה. אתה תרצה לקרוא לפונקציה שמחזירה לך את הקלט, כך שאם תבצע result = a^2 התוצאה תהיה שמור בתוך result מכיוון שהפונקציה החזירה את התשובה למי שקרא לה.
    חשוב לשים לב גם ש-return מסיים את ריצת הפונקציה, אז אם למשל אתה רוצה גם להדפיס למסך וגם להחזיר את הערך יהיה עליך לשים קודם כל את פקודת ההדפסה ורק לאחר מכן את פקודת ההחזרה.

  • האם התנאי בפנים או בחוץ? תלוי איזה תנאי. אם זה תנאי שחשוב למהלך הפונקציה, כמו למשל תחזיר 1 אם המספר אי זוגי ו-0 אם הוא זוגי, אז הוא צריך להיות בתוך הפונקציה. לעומת זאת, אם אתה רוצה לקרוא לפונקציה רק אם מתקיימים תנאים מסוימים תצטרך לשים את התנאי בחוץ.

10 לייקים

גם אני תקועה פה… אולי אפשרי להעלות סרטון קצר עם הסבר על עניין הפונקציה וההחזרה? תודה!

תוכלי אולי להסביר לי?
הצלחתי לכתוב ב5 שורות ללא return,
השתמשתי בif, print, else, print
מה עשיתי לא נכון?

נ.ב ניסיתי לקרוא את ההסבר שלך למטה, קודם כל תודה, אבל זה לא מובן לי ממש (הבעיה בי, עניין הפונקציות לא מסתדר לי טוב בראש… מנסה להבין מתרגול)

להבין מתרגול זו דרך נהדרת גם כן, ובתקווה יהיו סרטונים של ים על הנושא שיעשו סדר :slight_smile:
אם לא - לחפש בגוגל זו דרך נהדרת, אני בטוחה שיש שם אנשים שמתמחים בהסברים.
לגבי ה-5 שורות, שימי לב שלא ביקשו להדפיס אלא להחזיר - צריך להשתמש ב-return ולא ב-print. זה גם הסוד להצליח לעשות את זה ב-4 שורות, מה שפחות מסתדר אם עושים print.

2 לייקים

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

תודה רבה לך על התשובות והעזרה נותן הרבה מוטיבציה :muscle:.

לייק 1

תודה רבה על התשובה המפורטת.
אנסה לקרוא שוב את המחברת, אעבור על התשובות שלך ואם לא הולך- אז מקורות חיצוניים…

תודות :slight_smile:

הכוונה שלי היא על לפתור ב4 שורות. הגשתי עם 5 ורק אחרי זה נפל לי איך עם 4 חחח

היי יש מצב שאתה מסביר לי בפרטי איך עושים את זה עם 4 שורות :slight_smile:

היי,

השתמשת ברקורסיה… פונקציה שקוראת לעצמה ללא עצירה

אשמח לעזור במידה ורלוונטי :slight_smile: