קורס Python 3 שיעור פונקציות ב Python


זה נושא דיון מלווה לערך המקורי ב- https://www.tocode.co.il/bundles/python/lessons/09-functions
def sum_digits(n):
    result = 0
    while n > 0:
        digit = n % 10
        result += digit
        n //= 10

    print(f"Sum of digits is {result}")


sum_digits(941)

לא הסברת בסרט מה אתה עושה

    while n > 0:
        digit = n % 10
        result += digit
        n //= 10

אפשר הסבר?

הי,

בוא ננסה את זה יחד. אתה יכול להתחיל מלהסתכל שוב על פרק ״לולאות״ (מספיק החלק הראשון שלו עם ה while):
https://www.tocode.co.il/bundles/python/lessons/07-loops

אחרי זה נסה לכתוב כאן שורה אחר שורה מה כל שורה עושה לדעתך - ונמשיך משם

אני גם לא כל כך הבנתי מה עשית שם ולמה כל התנאים האלה הכרחיים

while n > 0:
    digit = n % 10
    result += digit
    n //= 10

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

  1. כל עוד n (המספר) גדול מאפס, נבצע:

  2. ניקח את שארית החלוקה של המספר בעשר - זו הסיפרה הימנית ביותר במספר

  3. נוסיף אותה למשתנה result, בו יישמר סכום כל הספרות (משתנה זה הוגדר לפני הלולאה כדי שישמור על ערכו במהלכה וגם אחריה)

  4. נחלק בעשר את המספר ונשמור את התוצאה חזרה במשתנה n. החלוקה בעשר בעצם מוחקת את הסיפרה הימנית ביותר לקראת הסיבוב הבא של הלולאה.

נסה לבחור מספר למשתנה n ולכתוב לעצמך בטבלא קטנה את השינויים בכל המשתנים בכל סיבוב של הלולאה כדי לראות איך הקוד עובד.

לא הבנתי מה זה return?

הי אלון,

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

x = twice(10)

print(say_hello_to(ynon))

write_hello_5_times()

נתחיל עם המקרה הראשון: נרצה לשאול מה יהיה הערך של x אחרי הפעלת השורה, למשל אם שורה למטה מישהו יכתוב print x מה יקרה?

במקרה השני נרצה לשאול ״מה יודפס?״ מה הפונקציה print צריכה לקבל בתוך הסוגריים?

ושאלה אחרונה - מה ההבדל בין המקרה השלישי לשני העליונים?

מה דעתך? נסה לכתוב את התשובות לשאלות שהעליתי ונמשיך משם לחקור את המילה return