תרגיל מספר 22 מפענח הצפנים

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

אם הקוד שגוי אני חושב שאתה יכול לשלוח

def check_if_numbers(num, counter = 0, tries = 0):
    tries = tries + 1
    counter = 0
    if '4' in num:
        counter = counter + 1
    if '8' in num:
        counter = counter + 1
    if '1' in num:
        counter = counter + 1
    if '2' in num:
        counter = counter + 1
    else:
        counter = 0
    return counter


def end_code():
    return ""


code = str(input("Please enter the combination for the safe: "))
count = 0
loop_try = 0
check_if_numbers(code)
if loop_try < 3:
    if count == 0:
        print("Wrong code, no numbers are in the combination for the safe! try again ")
    if count == 1:
        print("Wrong code, 1 number is in the combination for the safe! try again ")
    if count == 2:
        print("Wrong code, 2 numbers are in the combination for the safe! try again ")
    if count == 3:
        print("Wrong code, 3 numbers are in the combination for the safe! try again ")
    if count == 4:
        print("Currect! safe opened succesfully!")
        loop_try = 99
if loop_try > 3:
    print("exeeded the number of tries. Alarm on!")
if loop_try == 99:
    end_code()

אם זה מה שאני חושבת שזה, אז…
אם יש לך אותו משתנה גם בפונקציה וגם מחוץ לה, המשתנה שבתוך הפונקציה “מסתיר” את זה שמחוץ לה. כלומר, שינוי של המשתנה בתוך הפונקציה ישפיע רק על המשתנה בתוכה, והמשתנה בחוץ לא ישתנה.
אז איך כן משנים את המשתנה בחוץ? אך מנצלים את החישוב של הפונקציה? בעזרת return וקליטה של הערך המוחזר לתוך משתנה, ואז ביצוע פעולות עליו כרצונך

תסתכלי בקוד ששלחתי, לא נראה לי שאפשר להכניס ל-return כי זה יעצור את פעולת הלופ

מבלי להתייחס לשאר הקוד, על-מנת לשנות את ה-count החיצוני למה שאתה רוצה אתה יכול במקום לאתחל אותו ל-0 לאתחל אותו ל: count = check_if_numbers(num, counter = 0, tries = 0)
כש-num הוא הניחוש שהמשתמש הזין, ואז הוא יתעדכן לפי ה-return שביצעת לערך המבוקש

אבל זה אומר לשנות את השיטה שבה ה count עובד בקוד לא? לגרום לו להחזיק ערך רק לאחר שעבר על כל התנאים גם אם הוא לא מקיים אותם, ואז ה return יחזיר count בכל מקרה?

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

אבל יצרתי את שניהם למטרה זהה, בעיקר כדי להוציא את המשתנה מתוך הפונקציה לקוד

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

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

לייק 1

אפשר בבקשה הכוונה לתרגיל אני ממש תקועה ומיואשת כבר…

לייק 1

כנל :sob: :sob: :sob: