IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

Aide exercice 8.14 apprendre Python G.swinnen


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 27
    Par défaut Aide exercice 8.14 apprendre Python G.swinnen
    Bonjour, de nouveau je suis bloqué je remercie par avance la personne qui me viendrait en aide voici l'exercice:

    Extension du programme ci-dessous. Faire apparaître un troisième astre, et afficher en permanence la force résultante agissant sur chacun des trois (en effet : chacun subit en permanence l’attraction gravitationnelle exercée par les deux autres !).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    from tkinter import *
    from math import sqrt
     
    def distance(x1,y1,x2,y2):
        "Distance séparant les points x1,y1 et x2,y2"
        d = sqrt((x2-x1)**2 + (y2-y1)**2)
        return d
     
    def forceG(m1,m2,di):
        "Force de gravitation s'exerçant entre m1 et m2 pour une distance di"
        return m1*m2*6.67e-11/di**2
     
    def pointeur(event):
        global x,y
        x[n],y[n] = event.x,event.y
        can.coords(astre[n],x[n]-10,y[n]-10,x[n]+10,y[n]+10)
     
        di = distance(x[0],y[0],x[1],y[1])
        diA = di*1e9
        f = forceG(m1,m2,diA)
        valDis.configure(text="Distance = "+str(diA)+" m")
        valFor.configure(text="Force = "+str(f)+" N")
     
    def astre1():
        global n
        n = 0
     
    def astre2():
        global n
        n = 1
     
    m1,m2 = 6e24,6e24
    x,y = [20.,50],[20.,20]
    astre = [0]*2
    n = 0
     
    fen = Tk()
    fen.title("Gravitation selon Newton")
     
    valDis = Label(fen,text="Distance")
    valDis.grid(row=1,column=1,padx=10,sticky=W)
    valFor = Label(fen,text="Force")
    valFor.grid(row=2,column=1,padx=10,sticky=W)
     
    can = Canvas(fen,bg="light grey",width=300,height=200)
    can.grid(row=0,column=1,columnspan=2,padx=10,pady=10)
     
    can.bind("<Button-1>",pointeur)
     
    astre[0] = can.create_oval(x[0]-10,y[0]-10,x[0]+10,y[0]+10,fill="red",width =2) 
    astre[1] = can.create_oval(x[1]-10,y[1]-10,x[1]+10,y[1]+10,fill="blue",width =2)
     
    Button(fen,text="Astre 1",command=astre1).grid(row=0,column=3,pady=10,sticky=N)
    Button(fen,text="Astre 2",command=astre2).grid(row=0,column=3,pady=40,sticky=N)
     
    fen.mainloop()
    Je ne vous fais pas part de mon ébauche de raisonnement que je n'arrives même pas à formuler de manière compréhensible à l'écrit de plus quand je l'essaye dans mon IDE ça ne marche pas et il me parait tellement compliqué que je suis sur que c'est faux.

    Si une âme charitable pouvait me donner une piste pour avancer parce que j'y suis depuis des heures et même en lisant les cours et tutoriels pour apprendre Python : https://python.developpez.com/cours/ la c'est la stagnation pure et simple.

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 27
    Par défaut
    Re, alors une solution m'est venu en me couchant du coup je me suis relevé et si tout simplement ce n'était pas cela?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    from tkinter import *
    from math import sqrt
     
    def distance(x1,y1,x2,y2):
        d = sqrt((x2-x1)**2 + (y2-y1)**2)
        return d
     
    def forceG(m1,m2,di):
        return m1*m2*6.67e-11/di**2
     
    def pointeur(event):
        x[n],y[n] = event.x,event.y
        can.coords(astre[n],x[n]-10,y[n]-10,x[n]+10,y[n]+10)
     
        di12 = distance(x[0],y[0],x[1],y[1])*1e9
        di13 = distance(x[0],y[0],x[2],y[2])*1e9
        di23 = distance(x[1],y[1],x[2],y[2])*1e9
     
        if n == 0:
            f = forceG(m1,m2,di12) + forceG(m1,m3,di13)
        if n == 1:
            f = forceG(m1,m2,di12) + forceG(m2,m3,di23)
        if n == 2:
            f = forceG(m1,m3,di13) + forceG(m2,m3,di23)
     
        valFor.configure(text="Force = "+str(f)+" N")
     
    def astre1():
        global n
        n = 0
     
    def astre2():
        global n
        n = 1
     
    def astre3():
        global n
        n = 2
     
    m1,m2,m3 = 6e24,6e24,6e24
    x,y = [20.,50.,80],[20.,20.,20]
    astre = [0]*3
    n = 0
     
    fen = Tk()
    fen.title("Gravitation selon Newton")
     
    valFor = Label(fen,text="Force")
    valFor.grid(row=1,column=1,padx=10,sticky=W)
     
    can = Canvas(fen,bg="light grey",width=300,height=200)
    can.grid(row=0,column=1,columnspan=2,padx=10,pady=10)
     
    can.bind("<Button-1>",pointeur)
     
    astre[0] = can.create_oval(x[0]-10,y[0]-10,x[0]+10,y[0]+10,fill="red",width =2) 
    astre[1] = can.create_oval(x[1]-10,y[1]-10,x[1]+10,y[1]+10,fill="blue",width =2)
    astre[2] = can.create_oval(x[2]-10,y[2]-10,x[2]+10,y[2]+10,fill="green",width =2)
     
     
    Button(fen,text="Astre 1",command=astre1).grid(row=0,column=3,pady=10,sticky=N)
    Button(fen,text="Astre 2",command=astre2).grid(row=0,column=3,pady=40,sticky=N)
    Button(fen,text="Astre 3",command=astre3).grid(row=0,column=3,pady=70,sticky=N)
     
    fen.mainloop()
    La masse 1 subit l'attraction gravitationnelle de la masse 2 sur la distance entre masse 1 et 2 et elle subit l'attraction gravitationnelle de la masse 3 sur la distance entre masse 1 et 3 etc.

    J'espère que c'est cela !!!

Discussions similaires

  1. Aide exercice 8.11 Apprendre Python3 G.Swinnen.
    Par Asimoov dans le forum Général Python
    Réponses: 16
    Dernier message: 06/09/2017, 14h02
  2. Aide pour exercice 9.7 de python 3
    Par Shtrakeur dans le forum Général Python
    Réponses: 6
    Dernier message: 03/10/2011, 21h20
  3. Aide pour exercice livre "Apprendre à programmer en Python" par Swinnen
    Par reivilo1982 dans le forum Général Python
    Réponses: 4
    Dernier message: 28/02/2011, 12h35
  4. aide exercice python
    Par cedric190985 dans le forum Général Python
    Réponses: 2
    Dernier message: 24/03/2010, 12h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo