Erreur variable locale ou global aidez-moi c'est urgent

Fermé
Signaler
-
Messages postés
18298
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 janvier 2022
-
Bonjour,

S'il vous plait,
pouvez-vous regarder pourquoi portée est toujours égale à 0 et il y a un erreur sur nbtentative.
je dois rendre ce code à mon prof dans 30mn, je panique.
S'il vous plait,

from tkinter import *
from math import *


print("Bienvenue au tir au canon ! Bonne chance !")
fenetre= Tk("tir au canon")
w=1200
h=500
global portee, vitesse, alpha, nbtentative
nbtentative = 0
portee = 0
bouton=Button(fenetre, text="quitter", command=fenetre.destroy) # Bouton qui détruit la fenêtre
bouton.pack()
cv = Canvas(fenetre, width=w, height=h, background='grey')
Label(fenetre, text="Entrez un angle en degre:").pack() 
entree = Entry(fenetre)
entree.pack()
Label(fenetre, text="Entrez une vitesse en m/s:").pack() 
entree2 = Entry(fenetre) 
entree2.pack()


def parabole(x,alpha, vitesse):
    alpha = alpha*0.0174533
    y= (-0.5*9.81*x**2*(1+tan(alpha)**2)/vitesse**2)+x*tan(alpha) #(-0.5*9.81*x*x)/(vitesse*vitesse*cos(alpha)*cos(alpha))+x*tan(alpha)
    return int(y)    

def bigpoint(x1,y1):
    d="red"
    if((x1==20 and y1==480) or (x1==1170 and y1==480)): #pour colorer les deux points départ (0,0) et cible (1150,0)en jaune
        d="yellow"
        #nb:après passage dans le plot(a,b), leur coordonnées deviennent (0+20,600-20-0) et (1150+20,600-20-0)
    cv.create_oval(x1,y1,x1+10,y1+10,fill=d)

def plot(listex,listey):
    print(portee)
    #nbtentative=0
    #nbtentative = int(nbtentative) + 1
    #print(nbtentative)
    if portee>1100 and portee<1200:
        Label(fenetre, text="Vous avez gagné").pack()
        Label(fenetre, text="Nombre de tentative" + nbtentative).pack()
    else:
        Label(fenetre, text="Reessayer").pack()
    if  not len(listex)==len(listey):
        print('error')
    else:
        n=len(listex)
        for i in range(n):
            bigpoint(listex[i]+20,h-20-listey[i]) #on a rajouter le 20 a l'abcisse et diminuer de 20 pour le coordonnée afin d'eviter le petit decalage vers le bas et la gauche 
        cv.pack()
        fenetre.mainloop()

def trace_parabole():
    alpha = int(entree.get())
    vitesse = int(entree2.get())
    list_x=[]
    list_y=[]    
    list_x.append(0) #premier point (0,0)
    list_y.append(0)
    x=1
    while parabole(x,alpha,vitesse)>=0:
        list_x.append(int(x))
        portee = x
        list_y.append(int(parabole(x,alpha,vitesse))*3.5)        
        x = x+5    
    list_x.append(1150) #cible (1150,0)
    list_y.append(0)
    print(list_x)
    print(list_y)   
    print("portee : ")
    plot(list_x,list_y) 
    print("ok")

Button(fenetre, text="Tracer la courbe", command=trace_parabole).pack()




EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

1 réponse

Messages postés
18298
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 janvier 2022
1 003
les 30 minutes sont passées, désolé, trop tard.
0