Partage
  • Partager sur Facebook
  • Partager sur Twitter

mini programme débutant

    16 mai 2014 à 19:04:44

    Bonjour je débute en proga avec python et j'ai essayé de me faire un petit programme ( j'ai fait la premiere partie du tuto du site ) 

    J'ai 4 valeurs que j'ai saisi et je les ai définis comme étant des entiers . Le calcul c'est a+b/c-d . Le programme fonctionne dans le fichier .py que j'execute sauf que l'opération ne donne pas le bon résultat

    Genre, j'affecte à 

    a=3

    b=5

    c=4

    d=1

    Le résultat normalement exacte devrait être 2.66 alors que dans mon programme, c'est 3.25 qui est indiqué. 

    Est ce un problème dans la saisie de mon calcul ? Peut etre que " a + b/ c- d " est mal codé ?

    Merci d'avance et dsl si ca parait débile comme question je débute et je n'ai appris que jusqu'aux structures conditionnelles ! :) 

    voici mon code

    a = input("Saisissez a")  

    a = int(a)

    b = input("Saisissez b")

    b= int(b)

    c = input("Saisissez c")

    c= int(c)

    d= input("Saisissez d" ) 

    d= int(d)

    mise= a + b / c + d

    type(mise)

    mise= int(mise) and float(mise) 

    print(mise)

    • Partager sur Facebook
    • Partager sur Twitter
      16 mai 2014 à 19:20:27

      Déjà tu t'es trompé dans ta variable mise: c'est -d. Ensuite en python comme sur une calculatrice classique, l'ordre des opérations à son importance. Ainsi dans ton calcul la priorité est donné à la division. Donc ta variable mise est en fait dans l'ordre de calcul: (b/c) + a - d
      • Partager sur Facebook
      • Partager sur Twitter
      Précepte: Le mieux est l'ennemi du bien
        16 mai 2014 à 19:23:36

        Je ne sais pas en quelle classe tu es, mais es-tu au courant de la priorité des opérations? La division se fera avant l'addition. Du coup ce que tu fais est a + (b/c) + d, d'où un résultat erroné. Pour avoir ce que tu veux, il suffit de mettre des parenthèses autour de a et b, et c et d: (a + b) / (c - d) ;)

        De plus si à la fin tu fais mise = int(mise), ton résultat sera arrondi donc tu risques doublement de ne pas avoir ce que tu cherche.

        Edit: grillé...

        -
        Edité par Derzal 16 mai 2014 à 19:24:25

        • Partager sur Facebook
        • Partager sur Twitter
          16 mai 2014 à 19:24:02

          ah oui effectivement c'est -, je l'avais changé pour tester d'ou vinet l'erreur. :) 

          Ah ok d'accord, l'ordre des opérations, j'avais pas pensé, merci beaucoup

          • Partager sur Facebook
          • Partager sur Twitter
            16 mai 2014 à 19:32:12

            Derzal, comment je fais alors si le résultat est arrondi ? Float ne suffit pas ?

            et pour la variable a , b et c, comment je fais pour demander que se soit possible un nombre à virgule ? 

            merci :)

            • Partager sur Facebook
            • Partager sur Twitter
              16 mai 2014 à 19:48:08

              Ben tu remplace tes int par des float

              Par exemple au lieu de a = int(a), tu fais a = float(a)

              Et si tu as fait la première partie du tuto, tu devrais être en mesure d'améliorer un peu ton code, en gérant les parties répétitives avec une boucle ;)

              • Partager sur Facebook
              • Partager sur Twitter
                16 mai 2014 à 20:45:24

                De plus tu peux combiner ton input et ta conversion :)

                a = int(input("saisissez a "))



                • Partager sur Facebook
                • Partager sur Twitter
                Lookap, le Job board innovant pour Frelancers : http://lookap.me
                  16 mai 2014 à 21:27:42

                  J'arrive pas à faire plus court, je suis sur que c'est possible mais je trouve pas :/

                  f = lambda l: (l[0] + l[1]) / (l[2] - l[3])
                  print(f([float(input("nb")) for i in range(4)]))
                  



                  • Partager sur Facebook
                  • Partager sur Twitter
                    16 mai 2014 à 21:43:40

                     ah ah!

                    print((lambda l=([float(input("nb:")) for _ in range(4)]) : (sum(l[i] for i in range(4))))())
                    :diable:

                    EDIT: ah bah non,petite erreur:-°

                    print((lambda l=([float(input("nb:")) for _ in range(4)]) : ((l[0]+l[1])/(l[2]-l[3])))())

                    -
                    Edité par pythan 16 mai 2014 à 21:49:57

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Bevet Breizh! Breizh dizalc'h! Betek an trec'h! Ha mallozh ruz d'ar c'hallaoued! Trouvez votre voie
                      16 mai 2014 à 21:58:45

                      Ah d'accord merci pythan, j'avais fait la même chose mais ça marchais pas, en fait il suffisait juste d'appeler la lambda dans le print ^^'
                      • Partager sur Facebook
                      • Partager sur Twitter
                        17 mai 2014 à 0:06:14

                        merci des reponses je pense ca va m'aider :)
                        • Partager sur Facebook
                        • Partager sur Twitter

                        mini programme débutant

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown