Comme je faisais un petit programme de pile ou face pour voir comment tendent aléatoirement deux variables ayant des probabilités égales, j'ai reçu une erreur. Donc, voici mon script et l'erreur survenue...
from random import randrange
i = 0
z = 0
y = 0
x = str()
continuer = str()
def aleatoire():
x = randrange(1)
if x == 0:
i += 1
y += 1
if i % 100000:
return "face # {}".format(i)
else:
return "face"
else:
z += 1
y += 1
if z % 100000:
return "pile # {}".format(z)
else:
return "pile"
while 1:
x = aleatoire()
if y % 225000:
continuer = input("Vous avez atteint un total de {} lancés. Désirez-vous continuer ?".format(y))
if continuer == "q":
print("Vous avez quitté")
break
else:
print("Le jeu continue !")
else:
print(x)
print("Au revoir")
Traceback (most recent call last):
File "C:\Users\Admin\Documents\Patrick\codage\python\pile-face.py", line 28, in <module>
x = aleatoire()
File "C:\Users\Admin\Documents\Patrick\codage\python\pile-face.py", line 12, in aleatoire
i += 1
UnboundLocalError: local variable 'i' referenced before assignment
Bref, on me dit ne pas avoir préalablement déclaré i... Toutefois, comme on peut le voir, elle a été déclarée hors de la fonction, ce qui devrait, je crois (???), affecter le local ?
Et BTW, en utilisant x=randrange(1), tu définis une nouvelle variable x local à la fonction et tu ne réutilises pas ta globale définie au dessus.
Portée des variable
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Python c'est bon, mangez-en.