מפענח הצפנים- לא מריץ את הקוד

זה הקוד שכתבתי:

first = “4”
second = “8”
third = “1”
fourth = “2”

num_of_tries = 0

def try_code(code):
num_of_tries = num_of_tries + 1
code = input("please insert a 4 digit code: ")
true_code = 4812
if int(code) == true_code:
return(print(“this is the correct code! you win!”))
else:
correct_guesses = 0

    if first in code: 
        correct_guesses = correct_guesses + 1
    if second in code:
        correct_guesses = correct_guesses + 1
    if third in code:
        correct_guesses = correct_guesses + 1
    if fourth in code:
        correct_guesses = correct_guesses + 1
    
    print(str(correct_guesses) + " of the digits you picked is in the correct code, please try again")
    if num_of_tries == 3:
        return(print("the alarm is turned on, you lose"))
try_code(code)

try_code(code)

כשאני מריץ אותו אני מקבל את ההודעה הבאה:
----> 9 num_of_tries = num_of_tries + 1
10 code = input("please insert a 4 digit code: ")
11 true_code = 4812

UnboundLocalError: local variable ‘num_of_tries’ referenced before assignment
הגדרתי את המשתנה בשורה 6, אני לא מבין מדוע הוא לא מתייחס אליו…

היי תמיר,

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

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

נכון. זו אחת הסיבות שהתרגיל הזה מאתגר :slight_smile: