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 pour débuter


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2021
    Messages : 2
    Par défaut Exercice pour débuter
    Bonjour, je débute tout juste en Python et je suis bloqué sur un exercice d’entrainement :

    "Définissez deux fonctions nommées aire() et perimetre() qui prennent un argument (rayon) et renvoient respectivement
    l’aire et le périmètre d’un cercle. Stockez les résultats dans des variables aire et perimetre et affichez le contenu de ces variables."

    Voilà ce que j'ai essayé mais sans résultat correct, si quelqu'un pourrais m'aider s'il vous plaît :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    import math
     
    def aire(rayon):
        aire = math.pi * rayon * rayon
        return aire
     
    def perimetre(rayon):
        perimetre = 2 * math.pi * rayon
        return perimetre
     
    print("Aire = ", aire)
    print("Perimetre = ", perimetre)

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

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Salut,

    Tu n'as pas fournit le paramètre "rayon"...

    Quand tu écris aire tu n'exécutes pas la fonction, pour exécuter la fonction en passant le paramètre "rayon" tu peux écrire par exemple aire(3) (rayon = 3)

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Citation Envoyé par Landy_Crypt Voir le message
    Voilà ce que j'ai essayé mais sans résultat correct, si quelqu'un pourrais m'aider s'il vous plaît
    Votre code marche mais fait autre chose que ce qui est attendu: les print affichent <function aire at ...> qui est juste la représentation de la fonction (ce qu'on peut afficher lorsqu'on fait "print") et non le résultat retourné par la fonction lorsqu'on l'appelle (pour l'exécuter).

    Citation Envoyé par Landy_Crypt Voir le message
    Stockez les résultats dans des variables aire et perimetre et affichez le contenu de ces variables."
    Vous direz au professeur que ce n'est pas une bonne idée d'avoir une fonction appelée "aire" et s'assigner son résultat à une variable de même nom: une fois la variable assignée, la fonction ne pourra plus être appelée (une variable Python contient le dernier objet qu'on lui a assigné).

    Jouez avec l'interpréteur Python:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >> def aire(): print('aire')
    ...
    >>> aire = aire()
    aire
    >>> aire()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'NoneType' object is not callable
    >>>
    Et quand vous ne comprenez pas quelque chose, ouvrez votre tuto. favori ou relisez votre cours.

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

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Salut
    Citation Envoyé par Landy_Crypt Voir le message
    Voilà ce que j'ai essayé mais sans résultat correct, si quelqu'un pourrais m'aider s'il vous plaît :
    Voilà, comme on te l'a dit, pour exécuter une fonction (c'est à dire récupérer son travail) il faut lui mettre des parenthèses qui sont le déclencheur de la fonction. Et si la fonction attend des paramètres tu les mets dans les parenthèses.
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print("Aire = ", aire(3))
    print("Perimetre = ", perimetre(5))

    Citation Envoyé par Landy_Crypt Voir le message
    Stockez les résultats dans des variables aire et perimetre
    Comme le dit wiztricks, ça c'est bien nul. Quand tu crées une fonction "aire()" tu définis une variable "aire" qui contient le code de la fonction. Si tu changes ensuite le contenu de cette variable par autre chose ben... ben tu pers la fonction (le one shot quoi )
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre actif
    Homme Profil pro
    Animateur Numérique
    Inscrit en
    Février 2013
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Animateur Numérique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2013
    Messages : 143
    Par défaut
    Saut,
    Alors oui nommer une fonction et une variable avec le même nom posera probléme, mais là ça marche, la portée permet de distinguer la variable (interne à la fonction) de la fonction, non ??

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Diablo76 Voir le message
    mais là ça marche, la portée permet de distinguer la variable (interne à la fonction) de la fonction, non ??
    Il n'y a pas de variable interne à la fonction. L'énoncé dit "créez une fonction aire puis récupérez le résultat de cette fonction dans une variable aire". Donc typiquement
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def aire(): ...
    aire=aire(...)
    # Et voilà, la fonction est maintenant perdue

    Et même si on crée une autre fonction avec une variable interne, ok on ne perd pas aire() mais on n'y accède plus...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def toto():
        aire=123
        #...zut... comment maintenant appeler la fonction aire()...?

    Et si par hasard on commet l'erreur d'utiliser la fonction aire() avant de créer la variable de même nom...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def toto():
        aire=aire(...)
     
    >>> toto()
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<stdin>", line 2, in toto
    UnboundLocalError: local variable 'aire' referenced before assignment
    ... car dans ce cas Python croit qu'on tente de modifier une variable globale sans l'avoir déclaré via le mot clef global.

    Et si on rajoute global...
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def toto():
        glonal aire
        aire=aire(...)
     
    toto()
    ... alors on se retrouve au point de départ: on a définitivement perdu la fonction aire().
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Membre actif
    Homme Profil pro
    Animateur Numérique
    Inscrit en
    Février 2013
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Animateur Numérique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Février 2013
    Messages : 143
    Par défaut
    Rhoo, mais qui a dit:

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par Diablo76 Voir le message
    Rhoo, mais qui a dit:
    L'énoncé donné dans le premier post...

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

Discussions similaires

  1. Quel logiciel (EDI) pour débuter en programmation ?
    Par mimosa69 dans le forum Débats sur le développement - Le Best Of
    Réponses: 13
    Dernier message: 17/01/2016, 16h45
  2. Débat : quelle distribution Linux choisir pour débuter ?
    Par Anonymous dans le forum Distributions
    Réponses: 227
    Dernier message: 18/02/2015, 10h09
  3. Cours et exercices pour débuter en jsp ?
    Par wsdl_adr dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 11/02/2009, 19h47
  4. Pour débuter en programmation réseau
    Par durnambule dans le forum Développement
    Réponses: 3
    Dernier message: 20/06/2004, 22h21

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