Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de conception d'un petit programme

(Pour le sport)

    12 août 2019 à 18:13:54

    Bonjour,

    Hier je me suis mis à coder (très simple) un petit programme dans la console (mes débuts)

    J'ai donc réalisé la première partie de mon programme qui est :

    # -*- coding: latin-1 -*-
    
    def Mb(poids, taille, age):
    return 66.5 + (13.75 * poids) + (5 * taille) - (6.77 * age)
    
    poids = float(input("Quel est votre poids ? "))
    taille = float(input("Quelle est votre taille ? "))
    age = int(input("Quel est votre age ? "))
    
    
    rep = Mb(poids, taille, age)
    print("Ton métabolisme de base est de : ", rep)



    Ce code retranscrit donc bien le métabolisme de base.

    Ensuite, je dois déterminer mon coefficient d'activité journalière et c'est ici que ma compréhension capote :

    def CoefActJour():
        pass #pas encore de fonction
    
    sommeil = float(input("En heure, combien de temps de sommeil et sieste ?") # Doit etre multiplé par 1
    toilette = float(input("En heure, combien de temps de toilette habillage ?") # par 2
    tvrepos = float(input("En heure, combien de temps de tv et repos ?")  # par 1.35
    actassis = float(input("En heure, combien de temps d'activité assise ?") # par 1.6
    Cuisine = float(input("En heure, combien de temps de cuisine ?") # par 1.8
    Repas = float(input("En heure, combien de temps de repas ?") # par 1.7
    Actmenage = float(input("En heure, combien de temps d'activité ménagère ?") # par 2.6
    achat = float(input("En heure, combien de temps d'achat ?") # par 2.5
    transport = float(input("En heure, combien de temps de transport ?") # par 1.5
    actpro = float(input("En heure, combien de temps de activité pro ?") # par 2
    marche = float(input("En heure, combien de temps de marche ?") # par 3
    sport = float(input("En heure, combien de temps de sport ?") # par 5
    
    #Coefficient totale / 24
    
    # 12 éléments qui ont chacun un coef différents



    Pour que vous compreniez bien, j'ai fais 12 variables, qui ont tous un input, donc si je fais 1h30 de marche, je stockerai 1.5 dans marche.

    Tout ces variables réunis doivent être divisé par 24 au final.

    Le résultat devrait se trouver entre 1 et 2 

    Plus simple :

    Je dois retranscrire ce tableau, je ne demande pas forcément d'être corrigé, de me finir l'exercice. J'ai besoin d'être aiguillé.

    J'ai l'impression que je suis obligé de déclarer ses variables, car elles ont toutes un input bien particulier, ce qui en fait 12 qui devront chacun être multiplié par un coef. différents. J'ai l'impression que je ne peux rien automatiser et j'ai l'impression que quoique je fasse, même si résultat il y a, mon code serait trop blindé d'inutilité. 

    Merci de votre aide

    Edit :

    def CoefParAct(self, coef):
        return self * coef
    
    som = float(input("En heure, combien de temps de sommeil et sieste ?"))
    
    
    rep = CoefParAct(som, 2)
    
    print(rep)


    Pour un input, ce bout de code marche, pour 12, je n'ai encore pas l'idée de comment faire. 

    Merci de votre aide

    -
    Edité par Jleon 12 août 2019 à 18:29:56

    • Partager sur Facebook
    • Partager sur Twitter
      12 août 2019 à 23:14:12

      Tu te focalises trop sur les input qui sont juste la façon que ton programme a de communiquer avec l'utilisateur. Il est particulièrement fastidieux de répondre à 12 questions  en console sans se tromper. On pourrait imaginer d'autres interfaces plus commodes (une interface graphique, une page web ou même un fichier texte à parser).

      Je ne sais pas ce que c'est que ce self que tu utilises ligne 1 (je doute que utilises une classe). Tu dois écrire une fonction qui calcule ton coefficient d'activité. Et bien, pas de mystère, cette fonction doit recevoir des paramètres qui sont justement les 12 activités. Après, le plus simple c'est que tes durées soient données en heures dans une liste Python de 12 flottants et dans le corps de la fonction tu fais ton calcul et tu le renvoies. Tu l'as très bien fait pour le coefficient de métabolisme. Tu fais pareil sauf que tu utilises une liste (ce qui sous-entend que tes données sont fournies dans un ordre défini à l'avance). On peut aussi utiliser un dictionnaire.

      • Partager sur Facebook
      • Partager sur Twitter
        13 août 2019 à 17:02:50

        Merci de ta réponse

        Donc il faudrait une liste prédéfinis contenant mes coefficients et que j'incrémente au fur et a mesure que je passe aux autres questions ?

        En mettant mes coefficients du plus petit au plus grand bien sur, de même je devrais faire suivre mes questions par rapport à ce nouvel ordre de coefficient ?

        Je préfère le redire, j'ai commencé le cours il y a peu de temps, c'était juste un exercice personnel, et qui m'aide dans la vrai vie en plus :p

        J'ai fais ça de mon coté, je n'avais pas encore vu votre réponse :

        a = float(input("En heure, combien de temps de sommeil et sieste ?"))                  # Doit etre multiplé par 1
        b = float(input("En heure, combien de temps de toilette habillage ?")) * 2                 # par 2
        c = float(input("En heure, combien de temps de tv et repos ?")) * 1.35                 # par 1.35
        d = float(input("En heure, combien de temps d'activité assise ?")) * 1.6              # par 1.6
        e = float(input("En heure, combien de temps de cuisine ?")) * 1.8                      # par 1.8
        f = float(input("En heure, combien de temps de repas ?")) * 1.7                          # par 1.7
        g = float(input("En heure, combien de temps d'activité ménagère ?")) * 2.6           # par 2.6
        h = float(input("En heure, combien de temps d'achat ?")) * 2.5                           # par 2.5
        i = float(input("En heure, combien de temps de transport ?")) * 1.5                  # par 1.5
        j = float(input("En heure, combien de temps de activité pro ?")) * 2                    # par 2
        k = float(input("En heure, combien de temps de marche ?")) * 3                          # par 3
        l = float(input("En heure, combien de temps de sport ?")) * 5                            # par 5
        
        
        rep = a + b + c + d + e + f + g + h + i + j + k + l
        
        print(rep / 24)



        -
        Edité par Jleon 13 août 2019 à 17:21:50

        • Partager sur Facebook
        • Partager sur Twitter
          13 août 2019 à 17:21:40

          Ce que tu peux faire pour que ce soit un peu plus digeste (ça reste à voir) c'est de rentrer tes données dans une liste et donc d'utiliser un seul input :

          data = input("En heure, veuillez renseigner les coefficients délimités par une virgule")
          
          #tu rentres : 1.5,0.5,2,3,4 ...
          
          list = data.split(",") 
          
          print(list) #affiche [1.5,0.5,2,...]
          
          #Tu peux travailler sur ta liste maintenant
          

          Ca ne change pas grand chose au problème ceci dit mais souvent c'est plus pratique de travailler avec une liste

          • Partager sur Facebook
          • Partager sur Twitter

          Problème de conception d'un petit programme

          × 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.
          • Editeur
          • Markdown