Name 'x' is assigned to before global declaration
Résolu
IISaigneur
Messages postés
21
Date d'inscription
Statut
Membre
Dernière intervention
-
IISaigneur Messages postés 21 Date d'inscription Statut Membre Dernière intervention -
IISaigneur Messages postés 21 Date d'inscription Statut Membre Dernière intervention -
Bonjours,
Je sollicite votre aide car j'ai un problème sur un programme de bataille naval.
Je débute dans ce langage, cependant ce programme est mon projet d'isn et il marchait très bien au lycée je l'ai récupéré via l'accé a distance de ma session et lorsque je lance sur mon pc il m'affiche cette erreur (voir pièce jointe).
merci de votre aide. Je joint aussi mon code désoler pour la non optimisation mais j'ai peur d'y touché vu que python est très capricieux :

Je sollicite votre aide car j'ai un problème sur un programme de bataille naval.
Je débute dans ce langage, cependant ce programme est mon projet d'isn et il marchait très bien au lycée je l'ai récupéré via l'accé a distance de ma session et lorsque je lance sur mon pc il m'affiche cette erreur (voir pièce jointe).
merci de votre aide. Je joint aussi mon code désoler pour la non optimisation mais j'ai peur d'y touché vu que python est très capricieux :
GrilleJ1 = ["0"]*11 GrilleJ2 = ["0"]*11 Rejouer = 0 Fin = 0 global VFin1 global VFin2 VFin1 = 0 VFin2 = 0 def GrillePosJ1 () : a = 1 Chiffre = 0 b = 0 Lettre = 64 for i in range (11): GrilleJ1[i]=["0"]*11 if i!=0 : GrilleJ1 [i][0] = Chiffre Chiffre = Chiffre + 1 for a in range (11): if a!=0 : GrilleJ1[0][a]=str(chr(Lettre)) Lettre = Lettre + 1 def GrillePosJ2 () : a = 1 Chiffre = 0 b = 0 Lettre = 64 for i in range (11): GrilleJ2[i]=["0"]*11 if i!=0 : GrilleJ2 [i][0] = Chiffre Chiffre = Chiffre + 1 for a in range (11): if a!=0 : GrilleJ2[0][a]=str(chr(Lettre)) Lettre = Lettre + 1 def AfficherJ1(): for i in range (11): print (GrilleJ1[i]) def AfficherJ2(): for i in range (11): print (GrilleJ2[i]) def BateauxJ1 (): for x in range(2,3): if x == 3: x = 3 for xx in range(1): PositionJ1 (3) PositionJ1 (x) def BateauxJ2 (): for x in range(2,3): if x == 3: x = 3 for xx in range(1): PositionJ2 (3) PositionJ2 (x) def PositionJ1 (long): Vrange = 0 Vorientation = 0 Vposition = 0 Occupée = 0 while Vorientation == 0 : print(" \nChoisissez la direction du bateau de longueur",long,"( Horizontale = 0 ; Vertical = 1 ) : " ) Dir = input("") Dir = int(Dir) if Dir == 0 or Dir == 1: Vorientation = 1 else : print("Veuillez choisir un nombre entre 0 ou 1") Vorientation = 0 while Vposition == 0: LPos = input("Choisissez la ligne sur laquelle la première case du navire est positionné : ") LPos = int(LPos) CPos = input("Choisissez la colone sur laquelle la première case du navire est positionné : ") CPos = int(CPos) for P in range (len (GrilleJ1[LPos][CPos])): if GrilleJ1 [LPos][CPos]=="0": Vposition = 1 elif GrilleJ1 [LPos][CPos]=="X": print("Une cases est déjà occupée veuillez choisir d'autres coordonnées") Vposition = 0 if Dir == 0: for p in range (long): GrilleJ1 [LPos][CPos]="X" CPos = CPos + 1 if Dir == 1: for p in range (long): GrilleJ1 [LPos][CPos]="X" LPos = LPos + 1 print("\n") AfficherJ1() def PositionJ2 (long): Vrange = 0 Vorientation = 0 Vposition = 0 Occupée = 0 while Vorientation == 0 : print(" \nChoisissez la direction du bateau de longueur",long,"( Horizontale = 0 ; Vertical = 1 ) : " ) Dir = input("") Dir = int(Dir) if Dir == 0 or Dir == 1: Vorientation = 1 else : print("Veuillez choisir un nombre entre 0 ou 1") Vorientation = 0 while Vposition == 0: LPos = input("Choisissez la ligne sur laquelle la première case du navire est positionné : ") LPos = int(LPos) CPos = input("Choisissez la colone sur laquelle la première case du navire est positionné : ") CPos = int(CPos) for P in range (len (GrilleJ2[LPos][CPos])): if GrilleJ2 [LPos][CPos]=="0": Vposition = 1 elif GrilleJ2 [LPos][CPos]=="X": print("Une cases est déjà occupée veuillez choisir d'autres coordonnées") Vposition = 0 if Dir == 0: for p in range (long): GrilleJ2 [LPos][CPos]="X" CPos = CPos + 1 if Dir == 1: for p in range (long): GrilleJ2 [LPos][CPos]="X" LPos = LPos + 1 print("\n") AfficherJ2() def TirJ1 (): global VFin1 VTir = 0 while VTir == 0: LTir = input("Choisissez la ligne de tir: ") LTir = int (LTir) CTir = input("Choisissez la colonne de tir: ") CTir = int (CTir) if LTir > 10 or CTir > 10: print ("Veuillez choisir des coordonnées valides") VTir = 0 else : VTir = 1 if GrilleJ2 [LTir][CTir]=="X": print ("Touché") GrilleJ2 [LTir][CTir]="t" VFin1 = VFin1 + 1 else : print ("Dans l'eau") def TirJ2 (): global VFin2 VTir = 0 while VTir == 0: LTir = input("Choisissez la ligne de tir: ") LTir = int (LTir) CTir = input("Choisissez la colonne de tir: ") CTir = int (CTir) if LTir > 10 or CTir > 10: print ("Veuillez choisir des coordonnées valides") VTir = 0 else : VTir = 1 if GrilleJ1 [LTir][CTir]=="X": print ("Touché") GrilleJ1 [LTir][CTir]="t" VFin2 = VFin2 + 1 else : print ("Dans l'eau") def ChangementJ (c) : import time time.sleep (1) for z in range (50): print("\n") print("A votre tours Joueur ",c,".") Change = 0 while Rejouer == 0: GrillePosJ1() AfficherJ1() BateauxJ1() ChangementJ (2) GrillePosJ2() AfficherJ2() BateauxJ2() while Fin == 0: global VFin1 global VFIn2 if (Change%2 == 0): ChangementJ (1) TirJ1() if VFin1 == 17: print("Le Joueur 1 à gagné") Fin = 1 else : ChangementJ (2) TirJ2() if VFin2 == 17: print("Le Joueur 2 à gagné") Fin = 1 Change = Change + 1 Rejouer = input("Voulez-vous rejouez ( Oui -> 1 ; Non -> 2):") Rejouer = int(Rejouer)

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI Merci d'y penser dans tes prochains messages. |
A voir également:
- Is assigned before global declaration
- Déclaration - Guide
- En plus des revenus, il ne faut surtout pas oublier de faire cette déclaration en ligne aux impôts - Guide
- What is my movie français - Télécharger - Divers TV & Vidéo
- Who is on my wifi - Télécharger - Outils Internet
- Where is it - Télécharger - Gestion de fichiers
3 réponses
Bonjour,
Python capricieux ? Pas plus qu'un autre langage. Je dirais même moins en fait :-). De plus, pour les modifications, rien ne t'empêche de faire une sauvegarde de cette version, et de faire une autre version test.
Pour l'erreur, je n'ai pas tout lu mais :
global VFin1
Tu as mis cette ligne deux fois. Garde uniquement la 1ère occurrence.
Python capricieux ? Pas plus qu'un autre langage. Je dirais même moins en fait :-). De plus, pour les modifications, rien ne t'empêche de faire une sauvegarde de cette version, et de faire une autre version test.
Pour l'erreur, je n'ai pas tout lu mais :
global VFin1
Tu as mis cette ligne deux fois. Garde uniquement la 1ère occurrence.