Boucle

ksanflo -  
dsy73 Messages postés 9003 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

je voudrai poser une question concernant les interfaces graphiques et boucles.

je dois construire une interface graphique permettant d'afficher l'évolution de la population en fonction du temps tout en sauvegardant les couples ( temps, population) dans des variables et les afficher dans un fichier. Pour cela, l'utilisateur doit renseigner à travers des cases crées dans l'interface graphique les différentes valeurs permettant le calcul de cette formule:

p= po+((k-po)/k)*r*po

où pt est la population initiale
k la capacité maximale de reproduction
r le taux de reproduction

dans le cas précis il m'a été demandé de tester mon programme avec les valeurs ci-dessous avec t allant jusqu'à 500
po=100
k=500
r=1

Votre aide me sera d'une grande utilité. En vous remerciant d'avance

1 réponse

  1. dsy73 Messages postés 9003 Date d'inscription   Statut Contributeur Dernière intervention   2 547
     
    Salut

    je n'ai pas compris quelle était la question.

    Tu devrais aussi nous montrer ce que tu as fait : https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
    0
    1. ksanflo
       
      voici mon programme que j'ai pu faire. Vu mon niveau de débutant, il doit être colmaté parfois.


      from tkinter import *


      mafen1=Tk()
      mafen1.title("capacité de reprodcution")


      saisie_ut=StringVar()
      resultat1=StringVar()

      def lire1():
      saisie=case_entree.get()
      global k
      try:
      nombre=float(saisie)
      k=nombre*1
      resultat1.set(str(k))
      mafen1.destroy()



      except:
      if("," in saisie):
      resultat1.set(". comme sépar.decimal")
      else:
      resultat1.set("Entrez un nombre")

      return


      def clavier1(touche):

      lire1()
      return


      case_entree=Entry(mafen1,textvariable=saisie_ut)
      case_entree.bind
      case_entree.pack()

      case_sortie=Label(mafen1,textvariable=resultat1)
      case_sortie.pack()



      # on crée un bouton pour activer la lecture, le calcul et la

      valider=Button(mafen1,text="sauvegarder",command=lire1)
      valider.pack()


      mafen1.mainloop()

      # deuxième variable population intiale

      mafen2=Tk()
      mafen2.title("population initiale")


      population_ut=StringVar()
      resultat2=StringVar()

      def lire2():
      population=case_entree.get()
      global p
      try:
      nombre=float(population)
      p=nombre
      resultat2.set(str(p))
      resultat2.set(str(p))
      mafen2.destroy()


      except:
      if("," in population):
      resultat2.set(". comme sépar.decimal")
      else:
      resultat2.set("Entrez un nombre")


      return



      def clavier2(touche):
      lire2()
      return


      case_entree=Entry(mafen2,textvariable=population_ut)
      case_entree.bind

      case_entree.pack()


      case_sortie=Label(mafen2,textvariable=resultat2)
      case_sortie.pack()


      valider=Button(mafen2,text="sauvegarder",command=lire2)
      valider.pack()

      mafen2.mainloop()


      # troisième variable taux de reproduction

      mafen3=Tk()
      mafen3.title("taux de reproduction")


      reproduction_ut=StringVar()
      resultat3=StringVar()

      def lire3():
      reproduction=case_entree.get()
      global r
      try:
      nombre=float(reproduction)
      r=nombre
      resultat3.set(str(r))
      mafen3.destroy()

      except:
      if("," in reproduction):
      resultat3.set(". comme sépar.decimal")
      else:
      resultat3.set("Entrez un nombre")

      return


      def clavier3(touche):
      lire3()
      return



      # pour introduire du texte dans le programme

      # on crée un objet de classe Entry qui sera recupéré par l'utilisateur

      case_entree=Entry(mafen3,textvariable=reproduction_ut)
      case_entree.bind
      case_entree.pack()


      # pour afficher les resultats on crée un objet de classe Label
      # ou on recupera le resultat

      case_sortie=Label(mafen3,textvariable=resultat3)
      case_sortie.pack()



      # on crée un bouton pour activer la lecture, le calcul et la

      valider=Button(mafen3,text="sauvegarder",command=lire3)
      valider.pack()


      mafen3.mainloop()



      # quatrième variable caractérisant le pas

      mafen4=Tk()
      mafen4.title("le pas")

      lepas_ut=StringVar()
      resultat4=StringVar()

      def lire4():

      lepas=case_entree.get()
      global lp
      try:
      nombre=int(lepas)
      lp=nombre+1
      resultat4.set(str(lp))
      resultat4.set(str(lp))
      mafen4.destroy()

      except:
      if("," in lepas):
      resultat4.set(". comme sépar.decimal")
      else:
      resultat4.set("Entrez un nombre")

      return


      def clavier4(touche):
      lire4()
      return


      case_entree=Entry(mafen4,textvariable=lepas_ut)
      case_entree.bind

      case_entree.pack()


      case_sortie=Label(mafen4,textvariable=resultat4)
      case_sortie.pack()


      valider=Button(mafen4,text="sauvegarder",command=lire4)
      valider.pack()


      mafen4.mainloop()

      # quatrième variable permettant de calculer

      mafen5=Tk()
      mafen5.title("operation")

      operation_ut=StringVar()
      resultat5=StringVar()

      def calcul():
      operation=case_entree.get()
      try:

      v=p+((k-p)/k)*r*p
      resultat5.set(str(v))

      except:
      if("," in operation):
      resultat5.set(". comme sépar.decimal")
      else:
      resultat5.set("Entrez un nombre")

      return


      def clavier5(touche):
      lire5()
      return

      case_entree=Entry(mafen5,textvariable=operation_ut)
      case_entree.bind

      case_entree.pack()

      # pour afficher les resultats on crée un objet de classe Label
      # ou on recupera le resultat

      case_sortie=Label(mafen5,textvariable=resultat5)
      case_sortie.pack()

      valider=Button(mafen5,text="Envoyer",command=calcul)
      valider.pack()

      mafen5.mainloop()


      Pour mieux expliquer ce je fais, j'ai crée des fenêtres afin de pouvoir entrer les valeurs permettant de calculer mon modèle. Cependant, j'aurai souhaité plutôt mettre en place des cases en lieu et place des fenêtres pour n'avoir qu'une fenêtre en fin de compte.

      1) Donc ma première question c'est comment regrouper dans une seule fenêtre les cases me permettant de calculer mon modèle?

      2) ensuite pour tester mon programme, il m'a été demandé de tester les valeurs suivantes:

      po=100
      k=500
      r=1
      avec t allant jusqu'à 500

      ==> pour cette question, il me semble qu'il me faudra mettre en place une boucle, ce que je ne parviens pas à faire afin d'avoir les valeurs de population de 1 à 500 en vue d'obtenir la coube.

      En espérant avoir été plus précis, je vous remercie d'avoir pris le temps de vous intéresser à mon problème.
      0
    2. ksanflo
       
      J'ai mis l'exercice en détail sur le lien que vous m'aviez précisé ainsi que mon script à ce stade.

      En vous remerciant d'avance!
      0
      1. dsy73 Messages postés 9003 Date d'inscription   Statut Contributeur Dernière intervention   2 547 > ksanflo
         
        Comme tu as pu t'en rendre compte, ton code est incompréhensible car mal formaté.
        0