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

Python Discussion :

Exercice : calcul de caractéristiques propulsives de fusées


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 14
    Points : 1
    Points
    1
    Par défaut Exercice : calcul de caractéristiques propulsives de fusées
    Bonjour,

    Dans le cadre d'un projet d'info, je dois rendre un problème posé par le prof..

    Le problème est en rapport avec les fusées mono-étage et bi-étage. On doit étudier les caractéristiques par rapport à son débit massique et la vitesse d’éjection des gaz.

    Voici l'énoncé de la première question en pièce jointe.

    Je dois créer une fonction qui puisse me donner selon le nom et la date de naissance, la valeur du debit massique et ensuite additionner les chiffres composant la date de naissance et l’additionner à 1000 pour obtenir la vitesse d'éjèction..

    help me s'il vous plait j'ai pas d'idée de comment faire la....
    Images attachées Images attachées  

  2. #2
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Déjà, commencer par écrire la fonction, avec des arguments, voir le résultat retourné, ...
    Il va falloir montrer un peu de bonne volonté et montrer un bout de code pour se faire aider.
    Pas d'aide par mp.

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 14
    Points : 1
    Points
    1
    Par défaut
    Oui je comprends désolé, j'ai ce début de programme, mais je sais pas si cela va me mener à quelque choses mais bon..

    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
    def calcul_propulsion_fusee(nom, date_de_naissance):
    #==============================================================================
        """
        Calcule les caractéristiques de propulsion de la fusée
        en fonction du nom et de la date de naissance fournis.
        Arguments d'entrée : 
            * nom : str
            * date_de_naissance : str
        Variables retournées :
            * debit : float
            * v_jet : float
        """
        debit = 0.0
        v_jet = 0.0
     
    def f(c):
        return ord(c) - ord('a') + 1
     
     
     
        return debit, v_jet
    la fonction f(c) détermine la position de la lettre dans l'alphabet, mais après cela, je suis bloqué..

  4. #4
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Citation Envoyé par Oursondech'nord Voir le message
    la fonction f(c) détermine la position de la lettre dans l'alphabet, mais après cela, je suis bloqué..
    Ben une des étapes consiste à effectuer la somme des indices alphabétiques des lettres du nom de famille...

    Votre fonction f renvoi l'indice alphabétique d'une seule lettre, vous pouvez donc l'utiliser pour récupérer l'indice de chaque lettre du nom (---> Il faudra l'exécuter pour chaque lettre du nom).

    On pourrait stocker chaque indice dans une liste pour pouvoir ensuite en faire la somme.

    Ou bien vous faites la somme au fur et à mesure... Ce qui est mieux pas besoin de liste et on économise le fait de devoir faire la somme des éléments d'une liste.
    On ferait donc une fonction somme_indices...

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 14
    Points : 1
    Points
    1
    Par défaut
    Je comprend ce que vous me dites, mais je ne vois pas du tout comment coder cela.. comment faire pour stocker les indices dans une listes de manières générales ?

  6. #6
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    En fait on peut même faire directement une seule fonction, je viens de la faire...

    Il faut faire attention au fait qu'il y a une différence entre les lettres minuscules et majuscules ord('a') et ord('A') sont différents...

    Il faudra donc par exemple transformer toutes les lettres du nom en minuscule, il y a la fonction lower pour ça...

  7. #7
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Citation Envoyé par Oursondech'nord Voir le message
    Je comprend ce que vous me dites, mais je ne vois pas du tout comment coder cela.. comment faire pour stocker les indices dans une listes de manières générales ?
    Il y a mieux comme je l'ai dit dans mon message précédent mais pour répondre à votre question on peut ajouter un élément à une liste par exemple en utilisant la fonction append...

  8. #8
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 14
    Points : 1
    Points
    1
    Par défaut
    Je suis désolé mais je n'y arrive pas.. pouvez vous me montrer un exemple de code pour résoudre cela pour que je puisse continuer s'il vous plait ?

  9. #9
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Citation Envoyé par Beginner. Voir le message
    En fait on peut même faire directement une seule fonction, je viens de la faire..
    Pour vous aidez je vous donne l'algorithme que j'ai utilisé pour la fonction debit_massique (def debit_massique(nom):) :

    1- Transformer toutes les lettres du nom en minuscule : nom = nom.lower().
    2- Initialiser une variable somme à 0 : somme = 0.
    3- Utiliser une boucle pour lire toutes les lettres de la chaine de caractère "nom" : for lettre in nom:
    3.1 Calculer l'indice i de la lettre "lettre" : i = ord(lettre) - ord('a') + 1.
    3.2 ajouter l'indice à somme : somme += i.
    3.3 retour au point 3.1 (on fait cela pour chaque lettre contenue dans "nom")
    4- Diviser somme par 1000 puis ajouter 20
    5- Retourner le résultat.

  10. #10
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Citation Envoyé par Oursondech'nord Voir le message
    Je suis désolé mais je n'y arrive pas.. pouvez vous me montrer un exemple de code pour résoudre cela pour que je puisse continuer s'il vous plait ?
    J'ai modifié mon message précédent pour ajouter quelques instructions...

    Cela devrait être plus simple...

  11. #11
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 14
    Points : 1
    Points
    1
    Par défaut
    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
    def calcul_propulsion_fusee(nom, date_de_naissance):
    #==============================================================================
        """
        Calcule les caractéristiques de propulsion de la fusée
        en fonction du nom et de la date de naissance fournis.
        Arguments d'entrée : 
            * nom : str
            * date_de_naissance : str
        Variables retournées :
            * debit : float
            * v_jet : float
        """
        debit = 0.0
        v_jet = 0.0
     
    def f(c):
    	return ord(c) - ord('a') + 1
     
    def debit(votre_nom):
        votre_nom = votre_nom.lower()
         somme = 0
     
         for k in range(n):
             somme = somme + n
             return somme
     
        debit = 20 + somme/1000
     
    return debit
    comme ceci ?

    Le but de l'exercice est d'executer la fonction calcul_propulsion_fusee(nom, date_de_naissance): en notant juste la nom et la date de naissance, pour qu'ensuite cette fonctionne donne direct la valeur du débit ainsi que la vitesse des gaz éjectes.

  12. #12
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    J'ai modifié mon message précédent pour ajouter quelques instructions...
    Vous l'avez-vu ?

    Citation Envoyé par Oursondech'nord Voir le message
    comme ceci ?
    Non pas tout-à-fait...

    Procédez par étapes, concentrons-nous juste sur la fonction debit pour l'instant :


    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def debit(votre_nom):
        votre_nom = votre_nom.lower()
         somme = 0
     
         for k in range(n):
             somme = somme + n
             return somme
     
        debit = 20 + somme/1000
     
    return debit

    Regardez mon message précédent pour corriger votre fonction...

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par Oursondech'nord Voir le message
    comme ceci ?
    Si vous testiez votre code, vous verriez qu'il plante...
    Donc ce n'est certainement pas comme çà qu'il faut coder et l'interpréteur Python vous aurait donné la réponse sans que vous ayez à demander ici.

    N'oubliez pas que faire ce genre d'exo. n'a de sens que si vous vous battez avec la machine pour comprendre pourquoi Python ne fait pas ce que vous voulez.
    Si vous n'y passez pas du temps, çà ne sert à rien: autant attendre le corrigé du prof.


    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  14. #14
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 14
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def debit_massique(votre_nom):
        votre_nom = votre_nom.lower
        somme = 0
     
        for lettre in nom:
            i = ord(lettre)-ord('a') +1
            somme += i
            return somme
     
        debit = somme/1000 +20
     
        return debit
    J'ai ce code mais pareil ça ne marche pas.. quand j'ai essayé, ça me dit en gros que le nom que je tape n'est pas défini...

  15. #15
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 14
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Si vous testiez votre code, vous verriez qu'il plante...
    Donc ce n'est certainement pas comme çà qu'il faut coder et l'interpréteur Python vous aurait donné la réponse sans que vous ayez à demander ici.

    N'oubliez pas que faire ce genre d'exo. n'a de sens que si vous vous battez avec la machine pour comprendre pourquoi Python ne fait pas ce que vous voulez.
    Si vous n'y passez pas du temps, çà ne sert à rien: autant attendre le corrigé du prof.


    - W

    Je le sais bien, mais python me dit ou est l'erreur mais pas la manière de comment la corriger et je reste toujours bloqué au final....

  16. #16
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par Oursondech'nord Voir le message
    J'ai ce code mais pareil ça ne marche pas.. quand j'ai essayé, ça me dit en gros que le nom que je tape n'est pas défini...
    Certes mais dans les détails, il vous donne aussi le numéro de ligne et l'instruction qui plante. Apprendre à faire quelque chose avec ces informations (les lires et les comprendre) fait partie de ce que vous allez apprendre en faisant l'exercice.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  17. #17
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Citation Envoyé par Oursondech'nord Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def debit_massique(votre_nom):
        votre_nom = votre_nom.lower
        somme = 0
     
        for lettre in nom:
            i = ord(lettre)-ord('a') +1
            somme += i
            return somme
     
        debit = somme/1000 +20
     
        return debit
    J'ai ce code mais pareil ça ne marche pas.. quand j'ai essayé, ça me dit en gros que le nom que je tape n'est pas défini...
    Ben oui c'est normal, le paramètre de votre fonction vous l'avez appelé "votre_nom" or moi je l'avais appelé "nom" donc vous, vous devez écrire for lettre in votre_nom: à la place de for lettre in nom:

  18. #18
    Membre expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 873
    Points : 3 717
    Points
    3 717
    Par défaut
    Ah oui il y a d'autres problèmes :

    1- A la ligne 2 : vous avez oublié les parenthèses : c'est votre_nom = votre_nom.lower() et non votre_nom = votre_nom.lower...
    2- Il faut supprimer la ligne 8, cela n'a pas de sens de mettre un return à cette ligne.

    Un return cela met fin à l’exécution de la fonction, dans votre cas (return somme) la fonction prend fin à la ligne 8 et retourne la variable somme et ce n'est pas ce qu'on veut...

  19. #19
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 14
    Points : 1
    Points
    1
    Par défaut
    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
    #==============================================================================
    def calcul_propulsion_fusee(nom, date_de_naissance):
    #==============================================================================
        """
        Calcule les caractéristiques de propulsion de la fusée
        en fonction du nom et de la date de naissance fournis.
        Arguments d'entrée : 
            * nom : str
            * date_de_naissance : str
        Variables retournées :
            * debit : float
            * v_jet : float
        """
     
    def debit_massique(votre_nom):
        votre_nom = votre_nom.lower
        somme = 0
     
        for lettre in votre_nom:
            i = ord(lettre)-ord('a') +1
            somme += i
            return somme
     
        debit = somme/1000 +20
     
        return debit
    Je suis désolé, je sais que vous essayez de m'aider mais la je passe 3 heures sur ça sans avancer et je suis vraiment dans le déni total. Je dois au final exécuter la fonction calcul_propulsion_fusee(nom, date_de_naissance): et je ne vois pas comment les deux autres fonctions que je vais créer vont me donner le résultat que je cherche... j'ai essaye def debit_massique(votre_nom): mais pareil je vois pas comment je peux régler le soucis que quand je tape un nom, il me marque que ce n'est pas défini.....

  20. #20
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 26
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 14
    Points : 1
    Points
    1
    Par défaut
    J'AI REUSSI A TROUVER YYEESSS (pardon), voici le code qui fonctionne desormais !!!!


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def debit_massique(nom):
        nom = nom.lower()
        somme = 0
     
        for lettre in nom:
            i = ord(lettre)-ord('a') +1
            somme += i
            debit = somme/1000 +20
        return debit
    je dois maintenant calculer la vitesse d'ejection des gaz et pour cela, pouyr cela, on doit taper une date de naissance, et prendre tout les entier de la date de naissance et ainsi additionner les différents chiffres pour les additionner à 1000 et retourner la valeur final.

Discussions similaires

  1. Exercice : Calcul de constante d'Euler
    Par arkate dans le forum C++
    Réponses: 7
    Dernier message: 06/01/2018, 02h41
  2. exercice calcul de l'énérgie
    Par Jahel dans le forum Général Python
    Réponses: 4
    Dernier message: 15/11/2017, 12h21
  3. exercice calcul de l'énérgie
    Par Jahel dans le forum Exercices
    Réponses: 1
    Dernier message: 14/11/2017, 11h40
  4. Exercice calcul taille mémoire centrale
    Par Sephi_999 dans le forum Composants
    Réponses: 1
    Dernier message: 11/05/2013, 18h08
  5. Exercice de calcul de valeur approchée
    Par annoussa dans le forum Pascal
    Réponses: 8
    Dernier message: 22/10/2006, 10h51

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