Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme de calcul dans mon script

Nouvel apprenant vraiment noob

    24 février 2024 à 22:54:00

    Bonjour,

    je découvre totalement Python et je m'entraine à coder des choses simples.

    VOilà ce que j'ai tapé.

    #définition des variables
    #porte
    porte = input("Combien de portes a la maison? -> ")
    #fenetre
    fenetre = input ("Combien de fenetres a la maison? -> ")
    #prix porte
    prix_porte = input("Combien coûte une porte? -> ")
    #prix fenetre
    prix_fenetre = input("Combien coûte une fenetre? -> ")
    
    def cout_porte(porte, prix_porte):
        resultat_prix_porte = porte * prix_porte
        return resultat_prix_porte
    
    def cout_fenetre(fenetre, prix_fenetre):
        resultat_prix_fenetre = fenetre * prix_fenetre
        return resultat_prix_fenetre
    
    def cout_maison(cout_fenetre,cout_porte):
        resultat_cout_maison = cout_fenetre + cout_porte
        return resultat_cout_maison
    
    print("Vos fenetres vont vous couter -> ", cout_fenetre)
    print("Vos portes vont vous couter -> ", cout_porte)
    print("Votre maison va vous couter -> ", cout_maison)

    Cela marche jusqu'au résultat où je n'ai pas le résultat du calcul mais cette phrase

    Vos fenetres vont vous couter ->  <function cout_fenetre at 0x7f4e658a7ac0>
    Vos portes vont vous couter ->  <function cout_porte at 0x7f4e65983d90>
    Votre maison va vous couter ->  <function cout_maison at 0x7f4e658a7e20>
    

    Je ne vois pas ce qui cloche dans mon programme pourtant simple.

    Si quelqu'un peut m'iader, ce serait super.

    Merci par avance




    • Partager sur Facebook
    • Partager sur Twitter
      26 février 2024 à 10:03:48

      Salut.
      Le soucis de ton code, c'est que tu définie des "arguments" pour tes trois fonctions, arguments obligatoire à fournir quand tu les utilise. Hors là, ligne 23-24-25 tu ne met ni les "  ( )  " obligatoire d'une fonction, ni les arguments défini.


      Exemple : def cout_fenetre(fenetre, prix_fenetre): #Suite du code
      Donnerais en exemple d'utilisation : cout_fenetre(10,25)


      Ensuite, tes input() récupère un élément de type str (String), qui est donc une chaine de caractère.

      >>> prix_fenetre = input("Combien coûte une fenetre ? ")
      Combien coûte une fenetre ? 10
      >>> type(prix_fenetre)
      <class 'str'>


      Pour pouvoir réaliser des calcule avec, il te faudrait un type int ou float ( '10' , ou '10.55') par exemple.
      Pour ce faire, tu peut ajouter int() à ton input

      >>> prix_fenetre = int(input("Combien coûte une fenetre ? "))
      Combien coûte une fenetre ? 10
      >>> type(prix_fenetre)
      <class 'int'>


      Sinon,  tu auras une erreur de ce type :

      >>> prix_fenetre = input("Combien coûte une fenêtre ? ")
      Combien coûte une fenêtre ? 10
      >>> nb_fenetre = input("Combien de fenêtre ? ")
      Combien de fenêtre ? 12
      >>> nb_fenetre * prix_fenetre
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      TypeError: can't multiply sequence by non-int of type 'str'



      -------------------------------------------------------------
       
      Donc, pour garder en soit ton code, il suffit d'ajouter des "arguments" à tes appels de fonctions.

      def cout_porte(porte, prix_porte):
          resultat_prix_porte = porte * prix_porte
          return resultat_prix_porte
       
      def cout_fenetre(fenetre, prix_fenetre):
          resultat_prix_fenetre = fenetre * prix_fenetre
          return resultat_prix_fenetre
       
      def cout_maison(cout_fenetre,cout_porte):
          resultat_cout_maison = cout_fenetre + cout_porte
          return resultat_cout_maison
      
      #définition des variables
      #porte
      porte = int(input("Combien de portes a la maison? -> "))
      #fenetre
      fenetre = int(input ("Combien de fenetres a la maison? -> "))
      #prix porte
      prix_porte = int(input("Combien coûte une porte? -> "))
      #prix fenetre
      prix_fenetre = int(input("Combien coûte une fenetre? -> "))
      
      print("Vos fenetres vont vous couter -> ", cout_fenetre(fenetre, prix_fenetre))
      print("Vos portes vont vous couter -> ", cout_porte(porte,prix_porte))
      print("Votre maison va vous couter -> ", cout_maison(cout_porte(porte,prix_porte),cout_fenetre(fenetre, prix_fenetre)))



      Ou alors, mais  dans ce cas la en soit tes fonctions sont inutiles et tu pourrais faire sans

      porte = int(input("Combien de portes a la maison? -> "))
      fenetre = int(input ("Combien de fenetres a la maison? -> "))
      prix_porte = int(input("Combien coûte une porte? -> "))
      prix_fenetre = int(input("Combien coûte une fenetre? -> "))
      
      def cout_porte():
          resultat_prix_porte = porte * prix_porte
          return resultat_prix_porte
        
      def cout_fenetre():
          resultat_prix_fenetre = fenetre * prix_fenetre
          return resultat_prix_fenetre
        
      def cout_maison():
          resultat_cout_maison = cout_fenetre() + cout_porte()
          return resultat_cout_maison
          
      
      print("Vos fenetres vont vous couter -> ", cout_fenetre())
      print("Vos portes vont vous couter -> ", cout_porte())
      print("Votre maison va vous couter -> ", cout_maison())
      



      -
      Edité par Koyuki Tanaka 26 février 2024 à 21:38:20

      • Partager sur Facebook
      • Partager sur Twitter
        26 février 2024 à 18:35:33

        Il faut préférer la 1ère version, car on peut passer les valeurs en paramètres des fonctions
        • Partager sur Facebook
        • Partager sur Twitter
          28 février 2024 à 16:21:09

          Bonjour,
          En écrivant
          print("Vos fenetres vont vous couter -> ", cout_fenetre)
          tu affiches l'objet cout_fenetre qui est une fonction
          si tu veux afficher le résultat qu'elle retourne, il faut l'exécuter:
          print("Vos fenetres vont vous couter -> ", cout_fenetre())
          • Partager sur Facebook
          • Partager sur Twitter
            4 mars 2024 à 20:01:42

            Phil_1857 a écrit:

            si tu veux afficher le résultat qu'elle retourne, il faut l'exécuter:
            print("Vos fenetres vont vous couter -> ", cout_fenetre())


            Et pour l'exécuter, comme elle est déclarée ainsi, avec deux arguments

            def cout_fenetre(fenetre, prix_fenetre):
                resultat_prix_fenetre = fenetre * prix_fenetre
                return resultat_prix_fenetre
            

            il faut l'appeler avec 2 expressions en paramètres :

            fenetre      = int(input("Combien de fenetres a la maison? -> "))
            prix_fenetre = int(input("Combien coûte une fenetre? -> "))
             
            print("Vos fenetres vont vous couter -> ", cout_fenetre(fenetre, prix_fenetre))
            #                                                       ^^^^^^^  ^^^^^^^^^^^
            


            Ici les expressions se réduisent à de simples variables, dont les valeurs seront transmises à la fonction.



            -
            Edité par michelbillaud 4 mars 2024 à 20:04:34

            • Partager sur Facebook
            • Partager sur Twitter

            Probleme de calcul dans mon script

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            • Editeur
            • Markdown