C'est une erreur classique de débutant. Une variable créée DANS une fonction n'existe PAS en dehors. Elle est locale.
def ma_fonction():
secret = 42 # Variable locale
print(secret)
ma_fonction() # Affiche 42
# print(secret) -> ERREUR ! "name 'secret' is not defined"
Global
À l'inverse, une fonction peut LIRE une variable globale (définie dehors), mais pas la modifier directement (sauf avec le mot-clé global, mais c'est mal vu).
score = 0
def gagner():
# score = 10 -> Crée une NOUVELLE variable locale score, ne touche pas au score global
global score # Dit à Python qu'on parle du score global
score = 10
Conseil d'ami : Évite global. Passe les valeurs en arguments et récupère-les avec return. C'est plus propre.