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 :

Division d'un retour de fonction : TypeError: unsupported operand type(s) for /: 'function' and 'int' [Python 3.X]


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2023
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Août 2023
    Messages : 4
    Par défaut Division d'un retour de fonction : TypeError: unsupported operand type(s) for /: 'function' and 'int'
    Bonjour,
    Je suis en train d'apprendre python, et lors de cet exercice sur les fonctions, j'ai une erreur concernant le retour de la fonction "salaire_hebdomadaire(salaire_mensuel)".
    Je ne comprend pas pourquoi il est pas possible de le diviser :

    code :

    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
    def salaire_mensuel(salaire_annuel):
      salaire_mensuel=salaire_annuel/12
      return salaire_mensuel
     
    def salaire_hebdomadaire(salaire_mensuel):
      salaire_hebdomadaire = salaire_mensuel /4 
      return salaire_hebdomadaire
     
    def salaire_horaire(salaire_hebdomadaire, heures_travaillees):
      salaire_horaire = salaire_hebdomadaire/heures_travaillees
      return salaire_horaire
     
    salaire_annuel = float(input("entrez votre salaire annuel :"))
    heures_travaillees = float(input("entrez vos heures hebdomadaires :" ))
     
    salaire_mensuel(salaire_annuel)
    salaire_hebdomadaire(salaire_mensuel)
    salaire_horaire(salaire_hebdomadaire, heures_travaillees)
     
    print (f"Votre salaire horaire est de {salaire_horaire} euros")
    Console :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    entrez votre salaire annuel :48000
    entrez vos heures hebdomadaires :35
    Traceback (most recent call last):
      File "main.py", line 17, in <module>
        salaire_hebdomadaire(salaire_mensuel)
      File "main.py", line 6, in salaire_hebdomadaire
        salaire_hebdomadaire = salaire_mensuel /4 
    TypeError: unsupported operand type(s) for /: 'function' and 'int'





    Merci d'avance

    Abraxas

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2003
    Messages : 1 606
    Par défaut
    Bonjour,

    merci de mettre votre code entre balises code, comme expliqué dans ma signature.

    C'est illisible là, vous ne trouvez pas ? Surtout dans un langage où la tabulation a toute son importance.

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 777
    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 777
    Par défaut
    Citation Envoyé par abraxas12 Voir le message
    Je ne comprend pas pourquoi il est pas possible de le diviser
    Que dit le message d'erreur?
    L'instruction salaire_hebdomadaire = salaire_mensuel /4 plante avec le message TypeError: unsupported operand type(s) for /: 'function' and 'int'.
    salaire_mensuel est une fonction, bizarre?
    Puis vous réfléchissez au cheminement dans le code qui aboutit à cela en remontant dans le message d'erreur qui dit que ça se passe suite à l'appel de la fonction salaire_hebdomadaire(salaire_mensuel) à la ligne 17.
    Et on constate que salaire_mensuel est bien une fonction car on n'a rien assigné d'autre à cette variable depuis la déclaration de la fonction (déclarer une fonction c'est assigner un objet de type fonction à une variable, clef dans le dictionnaire globals(). Et la clef d'un dictionnaire est unique).

    En effet, une variable en Python sera le dernier objet qu'on lui a assigné. Conséquence: on ne peut pas utiliser le même nom de variable pour représenter fonctions et autres objets en espérant que le langage fera la différence parce que leurs types sont différents.

    Ce qui veut dire aussi que vous devriez prendre le temps d'ouvrir un tuto. comprendre les concepts de base et essayer de les maîtriser en essayant de faire les exercices proposés (c'est le bon moment pour s'accoutumer à faire quelque chose des messages d'erreurs qui apparaîtront lorsqu'on va essayer de mettre le code au point).... Plutôt que de vous lancer à imaginer vos propres exercices pour vous convaincre que vous pouvez vous passer de cette phase laborieuse et peu gratifiante qu'est apprendre (comparé à faire).

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

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2023
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Août 2023
    Messages : 4
    Par défaut
    C'est justement ce que je suis en train de faire,
    Et vous avez mis en lumière un point de connaissance qui manquait à mes leçons,
    Merci

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 777
    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 777
    Par défaut
    Citation Envoyé par abraxas12 Voir le message
    Et vous avez mis en lumière un point de connaissance qui manquait à mes leçons
    3 points: apprendre à lire les messages d'erreurs, approfondir la notion de variable (en revisitant les chapitres qui en parlent dans votre tuto. préféré) et apprendre à utiliser la balise code.
    Dernier point qui n'a pas été abordé: marquer la discussion lorsqu'une solution satisfaisante a été donnée.

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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 18/01/2020, 15h07
  2. [Python 3.X] TypeError: unsupported operand type(s) for //: 'str' and 'int'"
    Par JOHN LOU dans le forum Général Python
    Réponses: 3
    Dernier message: 19/10/2019, 20h05
  3. [V8] Unsupported operand type(s) for *: 'account.tax' and 'float'
    Par Martin.M dans le forum Odoo (ex-OpenERP)
    Réponses: 2
    Dernier message: 17/11/2014, 09h48
  4. Réponses: 6
    Dernier message: 15/05/2013, 13h06
  5. [PEAR][DB] Unsupported operand types in Renderer.php
    Par brissou dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 10/05/2007, 13h50

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