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 :

Création de fonctions.


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Par défaut Création de fonctions.
    Bonjour tout le monde...
    nouvellement inscrit sur ce forum, je suis en cours d'apprentissage du langage Python...
    jusque là tout se passe bien, mais en arrivant à ce chapitre (la création de fonction) je bute sur un problème dont je n'arrive à trouver la solution...

    quand je fait un "programme" (basic pour le moment ) sous notepad++ et que je l'exécute sous IDLE, pas de soucis, ça fonctionne.

    par contre quand je veux y intégrer la ligne pour créer une fonction... ben ça ne marche plus.

    Voici une capture de mon écran à ce moment là :



    a gauche on voit mes lignes de code et à droite on voit la fenêtre d'exécution d'IDLE ou rien ne se passe quand je lance le programme, si ce n'est qu'il me met une nouvelle fois >>>...

    Pourriez vous m'orienter et me dire de quoi cela peut provenir?

    par avance merci à vous

  2. #2
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Par défaut
    bon la photo veux pas passer alors :
    voilà mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def table_par_7():
    	nb=7
    	i=0
    	while i<10:
    		print (i+1,"X",nb,"=",nb*(i+1))
    		i=i+1
    et voilà ce que j'obtiens sous IDLE quand j'appelle ma fonction:

    Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:06:53) [MSC v.1600 64 bit (AMD64)] on win32
    Type "copyright", "credits" or "license()" for more information.
    >>> ================================ RESTART ================================
    >>>
    >>> table_par_7
    <function table_par_7 at 0x0000000003010620>
    >>>

    ps : avec la mise en forme du message, les identations ont disparues... mais elles sont bonnes normalement
    merci

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2011
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2011
    Messages : 180
    Par défaut
    Bonjour.

    Quand on appelle une fonction en python et, même si elle n' a aucun paramètre, il faut toujours mettre les parenthèses. Ton erreur est classique
    chez les débutants ('et chez les programmeurs plus chevronnés aussi).

    Maintenant, quand tu poste du code, utilise la balise prévue à cet effet #
    et les indentations seront respectées.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 4
    Par défaut
    Merci à toi chticricri...

    En effet une erreur toute bête de ma part... petite inattention..
    tout fonctionne en effet.

    Pour ce qui est du code, je l'ai remis entre ses balises et c'est nickel..

    Encore merci

  5. #5
    Membre éclairé
    Homme Profil pro
    Développeur en formation
    Inscrit en
    Juillet 2013
    Messages
    300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur en formation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 300
    Par défaut
    En Python, tout est objet, même les fonctions et les classes. Quand tu mets une fonction sans les parenthèses, c'est l'objet qui est appelé, et donc la méthode __repr__ de la classe sur laquelle sont bâties les fonctions (function), cela fait apparaître cette chaîne barbare. D'ailleurs tu pourras tester un truc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def fonction() :
        print('test')
        return 'Ceci est une chaîne de caractères retournée par la fonction.'
    copie=fonction#sans les parenthèses, c'est l'objet qui est copié
    test=fonction()#avec parenthèses, on appelle l'objet, il est appelable, "callable", d'ailleurs si tu mets des parenthèses sur un autre objet (à part les classes qui sont aussi appelables), cela te relèvera une exception expliquant tout ça)
    copie est une copie de la fonction, tu peux faire copie(), ça fera exactement la même chose que fonction().
    test est la valeur renvoyée par la fonction, soit une chaîne de caractères (str) : 'Ceci est une chaîne de caractères retournée par la fonction.'

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Citation Envoyé par stalacta Voir le message
    copie est une copie de la fonction, tu peux faire copie(), ça fera exactement la même chose que fonction().
    "copie" est une autre référence a l'objet assigne a "fonction".
    Et non une copie de l'objet
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Création de fonctions dans DLL
    Par salrouge dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 23/08/2006, 09h42
  2. Création de fonction ou méthode
    Par sam.fet dans le forum ASP
    Réponses: 2
    Dernier message: 03/08/2006, 16h17
  3. Création de fonction
    Par Lo² dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 13/07/2006, 11h00
  4. Création de fonction
    Par benazerty dans le forum Access
    Réponses: 6
    Dernier message: 14/04/2006, 10h40
  5. Réponses: 5
    Dernier message: 30/03/2006, 14h52

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