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 :

Problème de calcul sur python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 5
    Par défaut Problème de calcul sur python
    Bonjour tout le monde,

    J'essaye de créer un input, afin d'entrer une planète X avec planète Y afin de faire la soustraction pour calculer la distance entre les deux, mais je suis bloqué, ça fait 2 heures je suis dessus donc je me permets de poster ça ici si quelqu'un pourrait me donner un coup de pouce


    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
    21
    sun=0
    mercury=1
    venus=2
    earth=3
    mars=4
    jupiter=5
    saturn=6
    urans=7
    neptune=8
     
     
    def code(star1,star2):
        diff = star1 - star2
        return diff
     
    print ('helloooo we will calculate the distance between two stars')
    star1 = input("Enter the first star: ")
    star2 = input("Enter the second start: ")
     
     
    code(star1,star2)

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 304
    Par défaut
    Salut,

    Ton problème c'est ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    >>> foo = 1
    >>> i = input("name: ")
    name: foo
    >>> i == foo
    False
    >>>
    Le premier foo est une référence à l'entier 1 et celui que j'ai entré est une string qui n'a rien à voir avec le premier.

    Plusieurs solutions comme toujours:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    astres = {"sun": 0,
              "mercury": 1,
              "venus": 2,
              "earth": 3,
              "mars": 4,
              "jupiter": 5,
              "saturn": 6,
              "urans": 7,
              "neptune": 8}
     
    star1 = input("Enter the first star: ") # par exemple "jupiter"
    print(astres[star1]) # --> 5
    Plus facile pour l'utilisateur, tu lui fais choisir dans une liste que tu affiches:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    astres = ["sun",
              "mercury",
              "venus",
              "earth",
              "mars",
              "jupiter",
              "saturn",
              "urans",
              "neptune"]
     
    affichage de la liste au moyen d'une boucle avec les numéros des astres (index)
    star1 = input("Enter the first star: ") # par exemple 4
    print(astres[star1]) # --> "mars"
    Etc ...

    Pour info, les planètes sont des noms propres.

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 811
    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 811
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par devfr Voir le message
    afin de faire la soustraction pour calculer la distance entre les deux
    Petit détail: en dehors des erreurs de conception liées à la nature des infos entrées (comme expliqué par VinsS où tu entres une string que tu tentes de convertir en variable de même nom, ce qui ne se fait pas => on entre une string qu'on analyse pour utiliser alors la variable/valeur adéquate), ton programme ne calcule pas la distance entre deux planètes, mais le nombre de planètes situées entre les deux planètes choisies. Ce qui n'est pas exactement la même chose.
    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]

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

    Citation Envoyé par devfr Voir le message
    J'essaye de créer un input, afin d'entrer une planete X avec planete Y afin de faire la soustraction pour calculer la distance entre les deux, mais je suis bloqué, ca fait 2 heures je suis dessus donc je me permet de poster ça ici si quelqu'un pourrait me donner un coup de pouce
    La différence de l'ordre des planètes du système solaires n'est pas une "distance".
    De plus, la distance de la Terre à Jupiter et la même que la distance de Jupiter à la Terre...
    "distance" étant une fonction symétrique donne un résultat positif ou nul.
    C'est plus compliqué qu'une simple différence qui peut retourner un nombre négatif.

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

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2019
    Messages : 5
    Par défaut
    Bonjour,

    Merci pour vos réponses, effectivement je me suis perdu dans l'exemple, j'ai commencé à programmer depuis deux semaines, plein de choses m'échappent encore.

    j'ai checké par exemple foo, ca veut dire une commande random. Mais que veut dire : >>> ?

    Si on retourne au problème, si je le présente sous cette forme : ( la personne entre son budget, ensuite le nom du premier object qu'elle veut acheter, et du deuxieme, ensuite la fonction va déduire le montant total des objects au budget)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    def calculation(budget,object1,object2):
        remaining = budget-object1-object2
        return remaining
     
    budget = float(input("Enter your budget : "))
    object1 = float(input("Object N1 : "))
    object2 = float(input("Object N2 : "))
     
     
    print(calculation(budget,object1,object2))



    Je suis bloqué à là, si j'entre juste des chiffres aux input j'ai bien le résultat, mais comment faire si on veut écrire le nom d'un objet et pas son montant. J'imagine faire une liste dictionnaire genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    { phone : 1200,
    mouse : 20,
    keyboard : 50,
    mousepad : 2 }
    etc, mais du coup comme convertir ce que l'utilisateur va mettre dans l'input et le retourner à la valeur d'une liste que j'aurais au préalable crée ?

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 811
    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 811
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par devfr Voir le message
    Bonjour,
    Non, une fois suffit. C'est un forum donc l'équivalent d'une discussion. Quand tu discutes avec quelqu'un, tu ne lui dis pas "bonjour" à chaque nouvelle phrase... si ?

    Citation Envoyé par devfr Voir le message
    j'ai checké par exemple foo, ca veut dire une commande random.
    Non, c'est juste un nom de variable. VinsS a besoin d'une variable pour illustrer son explication, il la nomme "foo". Moi j'aurais écrit "toto".

    Citation Envoyé par devfr Voir le message
    Mais que veut dire : >>> ?
    C'est le prompt quand on travaille dans l'idle Python (pour taper de courts exemples, pas besoin de paser par un script). On voit que tu n'y es pas allé souvent sur idle toi...

    Citation Envoyé par devfr Voir le message
    Si on retourne au problème, si je le présente sous cette forme : ( la personne entre son budget, ensuite le nom du premier object qu'elle veut acheter, et du deuxieme, ensuite la fonction va déduire le montant total des objects au budget)
    Pourquoi programmer sur 2 objets ? Et si la personne veut en acheter un ? trois ?

    Programme ton calcul sur un objet à la fois, et ensuite grâce à la magie des boucles, tu pourras répéter l'opération "n" fois pour "n" objets. Dans le style
    Code algo : 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
    entrer le budget
    boucle infinie, faire
        afficher "il vous reste ", budget
        afficher "entrez le nom de l'objet (ou rien pour quitter)"
        attendre saisie
        si saisie vide alors
            break
        fin si
        si saisie pas dans liste des objets disponibles alors
            afficher "objet inconnu"
            continue
        fin si
        récupérer prix objet en fonction de saisie
        si prix objet > budget alors
            afficher "objet trop cher"
            continue
        fin si
        budget=budget - prix objet
        ajouter objet dans liste des objets acquis
    fin faire

    Citation Envoyé par devfr Voir le message
    mais comment faire si on veut écrire le nom d'un objet et pas son montant. J'imagine faire une liste dictionnaire genre :

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    { phone : 1200,
    mouse : 20,
    keyboard : 50,
    mousepad : 2 }
    Oui mais tel qu'écrit, Python pensera que phone, mouse etc sont des variables. Si tu veux des strings comme clefs, faut les écrire comme strings

    Citation Envoyé par devfr Voir le message
    etc, mais du coup comme convertir ce que l'utilisateur va mettre dans l'input et le retourner à la valeur d'une liste que j'aurais au préalable crée ?
    Il y a plusieurs façons. Si on imagine que tu stockes le nom de l'objet acheté dans une variable "saisie", alors tu peux utiliser saisie in/not in dico.keys() pour vérifier que le nom saisi existe bien dans le dico. Tu peux aussi utiliser dico.get(saisie, None) pour récupérer la valeur correspondant à la saisie ou "None" si cette saisie n'existe pas. Utiliser un dico implique quand-même que tu saches manipuler les dictionnaires un minimum. Ainsi que de connaitre les différents opérateurs Python, bref que tu aies lu les premières pages d'un tutoriel Python...

    Et quand tu postes du code;
    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 averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 26
    Par défaut reponse
    Hello,

    je te propose une solution, je débute aussi alors elle n'est surement pas parfaite!
    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
    21
    22
    23
    24
    25
    26
    27
    28
     
    dico = {'mars': 215, 'terre': 2444, 'jupiter': 645}
     
     
    def findDist(a, b):
        for k, v in dico.items():
            if k == a:
                dist1 = dico[a]
            if k == b:
                dist2 = dico[b]
        return dist1, dist2
     
     
    def calcDist(a, b):
        if a < b: return b - a
        return a - b
     
     
    try:
        planet1 = str(input("Entrer la 1er planet: \n"))
        planet2 = str(input("Entrer la deuxième planet: \n"))
    except Exception as e:
        print("erreur: {}".format(e))
     
    distance1, distance2 = findDist(planet1, planet2)
     
    distancetotale = calcDist(distance1, distance2)
    print("La distance entre la planet {} et la planet {} est de : {} km\n".format(planet1, planet2, distancetotale))

Discussions similaires

  1. Problème de précision de calcul sur Python
    Par alae a dans le forum Général Python
    Réponses: 2
    Dernier message: 05/04/2019, 10h47
  2. [AC-2007] Problèmes de calculs sur un état
    Par sandralep84 dans le forum IHM
    Réponses: 3
    Dernier message: 03/09/2012, 12h26
  3. problème de calculs sur dates
    Par Sefrou dans le forum IHM
    Réponses: 3
    Dernier message: 12/02/2011, 00h27
  4. [WD10] problème de calcul sur monétaire
    Par kwakly dans le forum WinDev
    Réponses: 2
    Dernier message: 30/05/2008, 13h56
  5. Problème de calcul sur heure
    Par Copernic09 dans le forum Langage
    Réponses: 8
    Dernier message: 09/05/2007, 09h47

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