מיואשת ממפענח הצפנים... מצורפת תמונה

אני יושבת על זה שעות… לא מצליחה להגיע לפתרון הסופי. תקועה באיך להריץ 3 פעמים ושיעצר. רציתי ש tries יקבל גם כל פעם +1 אבל משום מה זה לא קורה, ולא ברור לי למה. אשמח לעזרה

א. כדאי להבא לא לפרסם פתרון לכולם :slight_smile:
ב. את לא עושה כלום עם ערך ההחזרה של הפוקנציה number_of_tries, ולכן tries לא מתעדכן בין קריאה לקריאה. את למעשה קוראת לשלוש הפעמים עם אותו ערך tries מקורי.
ג. איך שכתבת את התוכנית - גם אם הקוד נכון היא עדיין תרוץ שלוש פעמים.

תעשי את הבדיקה של התנאי וקידום המשתנה ב1 מחוץ לפונקציה.
וכל פעם שאת בודקת אם זה עדין בתוך ה3 פעמים תריצי את הפונקציה.

כנ"ל תקוע בבקשה עזרה


כותב לי בerror שcount לא מוגדר אבל הוא כן, גם מחוץ לפונקציה וגם בתוכה. correct_numbers גם מוגדרים. תקוע על זה שלושה ימים, ועדיין באמצע התרגיל.

סליחה… ראיתי שפירסמו קודים שלא עובדים, גם זה לא ממש עובד.
tries אמור להתעדכן בפונקציה של number_of_tries וכל פעם להתווסף לו 1 ולהחזיר את הערך הזה… לא מצליחה להבין מה לא עובד

נראה לי שמה שמבלבל אותך קצת זה שהשתמשת בשם משתנה tries גם בהגדרת הפונקציה, וגם בשימוש עצמו. זה מותר ובסדר, רק עלול לבלבל. תחשבי שנגדיר מעכשיו שהפונקציה number_of_tries תהיה מעכשיו:
def number_of_tries(number)

וערך ההחזרה יהיה בהתאם number. עכשיו את מבינה למה המשתנה ששמו tries לא מתעדכן? הפוקציה לא יודעת “לעדכן” ערכים שחיים מחוץ לה, בלי שעושים השמה מפורשת מחוץ לפונקציה. הפונקציה היא קופסא - היא מקבלת ערך ומחזירה ערך. לא יודעת לעשות לו השמה לתוך משתנה אחר.

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

עשיתי פה שתי דוגמאות שמציגות את מה שאני מתכוון:

רגע אבל אני הגדרתי את count בתוך הפונקציה רק כי זה עשה לי אותו error כשהוא לא היה מוגדר בפונקציה אז חשבתי שמוטב שזה יהיה בתוך הפונקציה. מחקתי את זה שוב וזה עשה את אותו error בדיוק.
ושיניתי את הפונקציה של הcount (הקודמת) לreturn ונזכרתי למה הורדתי את הreturn שכתבתי שם מלכתחילה, בכל אופציה בפונקציה של הכנסת הספרות זה משאיר לי את ההגדרה של count כ0 ולא מוסיף לו +1 לא משנה אילו ספרות הגדרתי. כשאני מנסה שהוא כן יזכור את זה בכל זאת ועושה גם return וגם count = count +1 זה גם עושה error ולא נותן לי.



כמו כן חייב לציין מבחינת הלימוד שלא הבנתי את האנלוגיה לקופסת הקסמים, מה זאת אומרת אנחנו לא יודעים מה קורה בתוך הפונקציה? אנחנו יודעים בדיוק, אנחנו הגדרנו את הפונקציה, אם אנחנו יודעים מה פייתון עושה כשהוא מתמודד עם כל הifים והtypes והביטויים הבוליאניים האלה באופן כללי, למה שלא נדע כשזה מוגדר בתוך פונקציה, זה יותר נראה לי כמו עיקרון ההשמה פשוט לפעולות מרובות במקום למשתנה אחד. וגם בתרגול שהם עשו שניסיתי ממש ללכת יד ביד איתו כדי לפתור את התרגיל הם פתאום השתמשו ב [אלה] שגם השתמשתי בהם בעקבותם אבל לא הבנתי מה המשמעות שלהם בשונה מסוגריים רגילם (לימדו את זה ופספסתי או שזה מתוך חומר מתקדם יותר?) והם גם השתמשו בsplit שממש לא הבנתי, אני צריך להשתמש בזה בתרגיל? כי זה בהחלט לא היה בחומר הקודם, זה משהו שאני צריך לדעת?
סורי על כל כך הרבה שאלות, אני ממש בלחץ שלא אספיק בזמן ומנסה בכוח להבין את החומר… :sweat_smile: :sweat: