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 :

une calculette simple


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2018
    Messages : 11
    Par défaut une calculette simple
    Créer une calculette simple qui réalisera les opérations addition et multiplication sur des entiers.

    Ce script prendra les arguments suivants :
    opération (add ou mult) entier1 entier2 ... entierN
    et renverra le résultat de l'opération demandée.

    Exemple :
    $ ./calculette.py add 1 2 3 4 5
    resultat=15

  2. #2
    Expert confirmé

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

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

    Nous avons pour politique de ne pas faire les exercices d'école à la place des étudiants.

    Mais nous acceptons d'aider, donc montre-nous ce que tu as déjà fait et explique où tu bloques.

    Éventuellement, si tu as un message d'erreur copie-le ici dans son intégralité.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2018
    Messages : 11
    Par défaut
    j'ai essayer de faire ce script:

    ******************

    Code bash : 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
    #!/bin/bash
     
    taille="$#-2"
    entier=0
     
    if [$1="add"];then
    {
        for(1=0;1<taille;i--);do
     
            entier=$entier+$1
            shift
         done
         echo "resultat=$entier"
    }
    elif [$1="mult"];then
    {
        for(1=0;1<taille;i--);do
     
            entier=$entier*$1
            shift
        done
        echo "resultat=$entier"
    }
    else
        echo "operation impossible"
    fi

    ******************

    Mais ça ne marche pas.

  4. #4
    Membre chevronné
    Homme Profil pro
    BTS SN IR
    Inscrit en
    Mai 2017
    Messages
    514
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : Mai 2017
    Messages : 514
    Par défaut
    premièrement :
    deuxièmement : c'est pas du python donc bon ... si j'ai bien compris le bute de l'exercice (que je trouve très moyen) est de produire du python

    bon, il faut que vous faut faire (en python bien sûr)
    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
    créez une fonction qui prend n argument (regardez sys.argv)
    	vérifier que le 1er arg est add ou mult
    		vérifier que la fonction prend bien plusieurs arguments (>=2)
    			vérifier que arg<sub>2</sub>, arg<sub>3</sub>, ..., arg<sub>n</sub> soit des nombres
    				si 1er argument vaut add
    					...
    					afficher résultat
    				sinon si 1er argument vaut mult
    					...
    					afficher résultat
    			sinon
    				afficher un message d'erreur expliquant à l'utilisateur comment utiliser le script
    		sinon
    			afficher un message d'erreur expliquant à l'utilisateur comment utiliser le script
    	sinon
    		afficher un message d'erreur expliquant à l'utilisateur comment utiliser le script
    je vous est mâcher le travail de réflexion sur le code (après tout vous avez fait l'effort d'une production, même si elle n'est pas en python), mais je pense que vous allez vous mordre les doigts sur certains points que j'ai omis de préciser.
    Bien sur il est possible de faire plus concis, mais chaque chose en son temps
    Bon courage.

  5. #5
    Expert confirmé

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Citation Envoyé par bkam20 Voir le message
    1 = 0 ??
    Avec les maths modernes je suis perdu.

  6. #6
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Citation Envoyé par VinsS Voir le message
    1 = 0 ??
    Avec les maths modernes je suis perdu.
    C'est peut-être la lettre L minuscule...

  7. #7
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Eh !
    Ne regardez pas si vous n'avez pas trouvé une solution pas vous-même, sinon j'irai hanter et faire boguer vos codes python pour l'éternité en leur jetant des mauvais sort avec quelques Exceptions aléatoires.

    Deux simples exemples, l'un utilisant itertools, l'autre les méthodes de float.
    Code python : 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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    import itertools
    import operator
     
    def operation(type_, *nums) :
        try :
            res = tuple(itertools.accumulate(nums, getattr(operator, type_)))
        except ZeroDivisionError :
            res = 'La tête à toto 0÷0',
            #res = 'nan',
        except Exception as e :
            res = e.args
        if res :
            return res[-1]
        else :
            return 0
     
    def operationF(type_, *nums) :
        res = float(nums[0])
        try :
            for n in nums[1:] :
                res = getattr(float, type_)(res, n)
        except ZeroDivisionError :
            res = 'La tête à toto 0÷0'
        return res
     
    if __name__ == '__main__' :
        import sys
     
        operateurs = {
            ('+', 'add', 'plus', 'a', 'additionner',):'__add__',
            ('-', 'sub', 'moins', 's', 'soustraire',):'__sub__',
            ('x', 'mul', 'fois', 'm','multiplier', '×'):'__mul__',
            ('/', 'div', 'quotient', 'd', 'diviser', '÷'):'__truediv__',
        }
     
        help = '({}) numérique, numérique, (numerique, ...)'.format(
            ', '.join([n[0] for n in operateurs])
        )
        print(help)
     
        if len(sys.argv) > 3 :
            for o in operateurs:
                if sys.argv[1] in o:
                    try:
                        nums = tuple(float(n) for n in sys.argv[2:])
                    except ValueError :
                        res = (
                            'Impossible d\'effectuer une opération'
                            ' avec des valeurs non numériques.'
                        )
                    else :
                        #res = operation(operateurs[o], *nums)
                        res = operationF(operateurs[o], *nums)
                    break
            else:
                res = 'Opérateur {} non supporté.'.format(sys.argv[1])
            print('>>>', res)


    Que j'estime pas trop mal, jusqu'à ce wiztricks vienne casser mon trip pour torcher ça avec 1 ou 2 lambdas et une boucle voir une liste en intention

    Je m'ennuyais

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    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 715
    Par défaut
    Citation Envoyé par bistouille Voir le message
    Que j'estime pas trop mal, jusqu'à ce wiztricks vienne casser mon trip pour torcher ça avec 1 ou 2 lambdas et une boucle voir une liste en intention
    Avec un truc comme çà par exemple?

    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import sys
    import operator
    from functools import reduce
     
    op = getattr(operator, sys.argv[1])
    print ( reduce( op,
            (int(x) for x in sys.argv[2:]),
            1 if op is operator.mul else 0,
            )
        )

    mais c'est un peu minimaliste.

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

  9. #9
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Pas mal le reduce

  10. #10
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    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 715
    Par défaut
    Encore plus court:
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    import sys
     
    print(eval({'add': '+', 'mul': '*'}[sys.argv[1]].join(sys.argv[2:])))
    Pas certain que cela motive le PO à ouvrir un tuto pour apprendre les constructions de base.
    Mais on est aussi là pour se détendre un peu.

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

  11. #11
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Oui, mais là, c'est de la triche

  12. #12
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 343
    Par défaut
    Bonjour,

    Et si besoin, une solution simple en built-in bash :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/bash
     
    op=${1/mult/*}
    op=${op/add/+}
    shift
    lst=$@
    lst=${lst// /"$op"}
    echo "resultat=$((lst))"

  13. #13
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 827
    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 827
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bistouille Voir le message
    ...une liste en intention
    Bonjour

    Listes en "intension" (qui peut se traduire par "listes par définition") et qu'on peut opposer à "extension" qui serait plus de l'ordre des exemples...
    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]

  14. #14
    Membre très actif

    Homme Profil pro
    Bidouilleur
    Inscrit en
    Avril 2016
    Messages
    721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Avril 2016
    Messages : 721
    Billets dans le blog
    1
    Par défaut
    Corrige tes propres fautes d"orthographes avant de t'occuper des miennes

    Les personnes dans ton genre, avec cette suffisance, ce ton agressif dissimulé, je les aime pas, et je t'ai déjà demandé par mp de m"ignorer, sur quoi tu n'as su répondre que par une vulgaire insulte.
    Bref, ignore-moi, ainsi, moi, le forum ne s'en porteront que mieux.

  15. #15
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 827
    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 827
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bistouille Voir le message
    Corrige tes propres fautes d"orthographes avant de t'occuper des miennes
    Ah ? Lesquelles ?? Parce que tu aurais pu m'en montrer quelques unes...
    Au fait, pas de "s" à "orthographe" car il n'y en a qu'une seule d'"orthographe". Mais c'est pile poil celle que tu ne connais pas.

    Citation Envoyé par bistouille Voir le message
    Les personnes dans ton genre, avec cette suffisance, ce ton agressif dissimulé, je ne les aime pas, et je t'ai déjà demandé par mp de m"ignorer, ce à quoi tu n'as su répondre que par une vulgaire insulte.
    Bref, ignore-moi, ainsi, moi, le forum ne s'en porteront que mieux.
    Joli. Tu sais donc détecter les "tons agressifs dissimulés" ??? Je suis whaou tellement impressionné par ton discernement... Si en plus tu sais danser et jongler tu dois être vraiment un type extraordinaire. Pas étonnant alors que tu te permettes de parler au nom du forum...
    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]

  16. #16
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2018
    Messages : 11
    Par défaut
    Bonjour,

    J'ai enfin réussi à faire ce script. Je vous remercie de m'avoir aidé a faire mon premier script en bash.
    Je suis désolé pour mes fautes de frappes comme: "1=0" au lieu de "i=0".

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

Discussions similaires

  1. InputMismatchException dans une calculette simple
    Par nevoa dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 12/06/2014, 17h54
  2. le meilleur SGBD pour une application simple
    Par nousss77 dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 23/09/2005, 07h45
  3. [C#] Redirection d'une frame vers une page simple
    Par st0j dans le forum ASP.NET
    Réponses: 6
    Dernier message: 17/06/2005, 15h42
  4. Conseils sur une API simple pour Windows
    Par alejandro dans le forum Choisir un environnement de développement
    Réponses: 4
    Dernier message: 28/04/2005, 18h12
  5. Réponses: 4
    Dernier message: 28/12/2003, 15h50

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