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 :

Les choses se corsent pour Suppadrakn


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2011
    Messages : 65
    Points : 36
    Points
    36
    Par défaut Les choses se corsent pour Suppadrakn
    Un titre qui en dit long n'est - ce - pas ?

    Me voila rendu au chapitre concernant les fonctions ( diantre ! On sent de suite que le niveau à monté ). On y retrouve pas mal d'informations et surtout pas mal de nouveau vocabulaire à démêler et assimiler (arguments, paramètres etc..)

    Tranquillement donc je découvre ce qu'est une fonction et je pense avoir clairement compris que la fonction nous permettais d'alléger notre code d'une part mais aussi de rendre notre travail plus efficace en nous évitant ( si besoin ) de réécrire plusieurs fois les même choses.

    Je me heurte ce soir (déjà) au premier exercice ( voila qui est déroutant ) et je fais donc appel à vous afin d'éclairer ma lanterne.

    Nous nous situons à l'exercice e.44 dont voici la consigne :

    Définissez une fonction ligneCar(n,ca) qui renvoie une chaîne de n caractère ca.
    Comme à l'accoutumé, je commence par vous exprimez mon raisonnement :

    On commence tout logiquement par appelé la fonction soit

    Je définis ensuite trois variables :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    compteur = 0
    ret= str("ca")
    liste= []
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    While a <= n:
        compteur = compteur + 1
        list.append(ret)
    donc tant que la valeur utilisateur n'est pas atteinte on incrèmente le compteur
    et on ajoute à ma liste la chaîne de caractère "ça"

    Pour terminé je demande à la fonction de retourner et donc d'afficher ma liste, soit :

    Qu'en est-il maintenant du corps principal du programme ? Les choses me semblent toute simples pourtant :

    Je demande tout d'abord à l'utilisateur d'entrer une valeur qui viendra donc remplacer mon "n"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valeur = raw_input("Veuillez entrer une valeur :")
    nouveau paramètre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    afCa = "ca" ou éventuellement afCa = str("ca")
    j'appel ensuite ma fonction en utilisant mes deux variables:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ligneCar (valeur, afCa)
    Petite mise en situation (désolé au passage si mon poste paraît lourd mais disons qu'en écrivant tout ceci de manière détaillé, je me dis parfois qu'une illumination....Enfin vous voyez.)

    L'utilisateur, entrer le chiffre 9.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while a <= 9 :
    a = a + 1
    list.append(afCa) #soit ajouté un "ca" à ma liste.
    Avec ça, il devrait donc me retourner la liste suivante :

    ca, ca, ca, ca, ca, ca, ca, ca
    Et pour ceux et celles qui préfère la version courte :

    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
    29
    30
    31
    32
    33
    34
    ####################################
    # Programme Python Type            #
    # Sujet : exercice e.44            #
    ####################################
     
    ####################################
    # Définire une fonction            #
    # ligneCar(n, ca) qui renvoie une  #
    # chaine de n caractere ca.        #
    ####################################
     
     
    ####################################
    # Définition de(s) fonctions :     #
    ####################################
     
    def ligneCar(n, ca):
        a = 0
        ret = str("ca")
        liste = []
        while a <= n:
            a = a + 1
            list.append(ret)
        return(liste)
     
     
    ####################################
    # corps principal du programme     #
    ####################################
     
     
    valeur = raw_input("Entrer une vleur:")
    AfCa = "ca"
    ligneCar(valeur, AfCa)

    Ou se situe mon erreur ?

  2. #2
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Une ligne de n caractère ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> def ligneCar(n, ca):
    ...     return ca * n
    ... 
    >>> ligneCar(10, 'a')
    'aaaaaaaaaa'
    Pensez simple.

    @+
    Merci d'utiliser le forum pour les questions techniques.

  3. #3
    Membre éprouvé
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Points : 1 006
    Points
    1 006
    Par défaut
    Salut, concernant tes erreurs...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def ligneCar(n, ca):
        a = 0
        #comme dit par PauseKawa, c'est pas la chaine "ca" que tu dois retourner
        #mais le contenu de ta variable <ca>(caractère)
        ret = str("ca")
        #nom de variable <liste>
        liste = []
        while a <= n:
            a = a + 1
            #ici, tu te sers du type <list> au lieu de ta variable <liste>
            list.append(ret)
        #Il t'es demandé de retouner une chaine de caractère. <liste> est une <list>
        return(liste)
    En suivant l'idée des listes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def ligneCar(n, ca):
        a = 0
        liste = []
        while a <= n:
            a = a + 1
            liste.append(ca)
        #"".join(un_ensemble_contenant_des_str) retournes une str constituée
        #de tous les éléments de l'ensemble concatenés
        return "".join(liste)
    en se libérant de while (au profit de for) ainsi que des listes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def ligneCar(n, ca):
        ret = ""
        for i in range(n):
            ret += ca
        return ret
    et pour le faire hard-pythonic
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def ligneCar(n, ca):
        #Produit un "ensemble" contenant n-fois <ca> et concatène le tout.
        return "".join(ca for i in range(n))
    Bien que le plus simple étant comme l'a fait Pausekawa
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

  4. #4
    Membre régulier Avatar de Lujeni
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 52
    Points : 82
    Points
    82
    Par défaut
    Ma proposition pour ceux qui aime le one shot
    C’est exactement la même chose que précédemment, seule la syntaxe change:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> ligneCar = lambda n, ca: ca*n
    >>> ligneCar(10, 'a')
    'aaaaaaaaaa'

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2011
    Messages : 65
    Points : 36
    Points
    36
    Par défaut


    Effectivement....Penser simple, et que dire d'autre si ce n'est merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      #ici, tu te sers du type <list> au lieu de ta variable <liste>
            list.append(ret)
    Arf une bien belle erreur, j'aurais du prendre le temps de me relire un peu mieux...En espérant apprendre de mes erreurs. Au passage, que signifie exactement :


  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2011
    Messages : 65
    Points : 36
    Points
    36
    Par défaut
    Après vos dernières explications et une relecture attentive du chapitre, j'enchaîne sur l'exercice e.45 :

    Définir une fonction surfCercle(R), cette fonction doit renvoyer la surface, l'aire d'un cercle dont ou lui fournit le rayon R en argument.
    Cette fois-ci j'arrive avec un code qui fonctionne Je ne sais pas si j'ai appliqué de façon formel la magnifique expression de Monsieur Kawa ( Pensez - simple ) mais le tout fonctionne.

    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
    29
    ####################################
    # Programme Python Type            #
    # Sujet : exercice e.45            #
    ####################################
     
    ####################################
    # Définire une fonction            #
    # surfCercle qui renvoie la        #
    # surface (l'aire) d'un cercle     #
    # dont on lui fournit le rayon     #
    ####################################
     
     
    ####################################
    # Définition de(s) fonctions :     #
    ####################################
     
    def surfCercle(R):
        return (3.14159 * R * R)
     
     
    ####################################
    # corps principal du programme     #
    ####################################
     
    print ("Veuillez entrer le Rayon du cercle:")
    rayon = float(raw_input())
    cercle = surfCercle(float(rayon))
    print (cercle)
    edit : Je me suis rendu compte en travaillant sur l'exercice 46 que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cercle = surfCercle(float(rayon))
    flot n'était pas nécessaire puisque j'avais déjà réaliser la conversion via :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rayon = float(raw_input())

  7. #7
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    rayon = float(raw_input())
    cercle = surfCercle(float(rayon))
    Pas besoin de faire deux fois la conversion. Mais là je chipote.

    Pour ce qui est du 'pensez simple' l'auteur ne tend pas de piège, surtout en abordant un autre sujet. Regardez ce qu'il vous présente, rajoutez y ce qu'il a déjà dit si cela ne suffit pas mais ne vous perdez pas dans des considérations qui vont vous faire perdre le but.

    @afranck64 ni range ni .join() ne sont abordés (ni lower(), upper() etc...)
    L'auteur survole le langage pour arriver rapidement aux fonctions puis a tkinter. Pour le message précédent j'ai eu du mal a trouver in et not...

    @+
    Merci d'utiliser le forum pour les questions techniques.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2011
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 43
    Points : 67
    Points
    67
    Par défaut
    Effectivement, cet ouvrage ce veux plus un guide d'apprentissage de la programmation en général qu'un guide des bonnes pratiques en Python. Ce livre s'adresse aux véritables débutants en programmation et je trouve qu'il respect bien ses objectifs.

    -*- --- -*-

    Sinon, chère OP, sachez qu'à la fin du livre se trouve les corrections des exercices (presque tous). Je vous le précise uniquement à titre d'information et non pas pour que vous arrêtiez de posez vos questions sur ce forum car au fond il est certainement plus intéressant pour vous de discuter de votre apprentissage en temps réel avec d'autres utilisateurs expérimentés que de lire bêtement une solution toute faite.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2011
    Messages : 65
    Points : 36
    Points
    36
    Par défaut
    Sinon, chère OP, sachez qu'à la fin du livre se trouve les corrections des exercices (presque tous). Je vous le précise uniquement à titre d'information et non pas pour que vous arrêtiez de posez vos questions sur ce forum car au fond il est certainement plus intéressant pour vous de discuter de votre apprentissage en temps réel avec d'autres utilisateurs expérimentés que de lire bêtement une solution toute faite.
    Je ne m'en étais pas encore rendu compte, je n'ai pas réellement pris le temps de feuilleter le livre. J'ai commencé par la page 1 et je m'en serais rendu compte rendu à la fin . Mais comme vous dites, il est bien plus profitable pour moi ( et peut être pour d'autres ) de venir discuter des mes problèmes ( je parle toujours d'informatique ) ici sur le forum, surtout que vous m'avez tous été d'une aide plus que précieuse depuis le début de mon apprentissage. Je ne changerais cela pour rien au monde

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2011
    Messages : 65
    Points : 36
    Points
    36
    Par défaut
    Décidément, chaque exercice rencontré me cause des soucis ! Devrais-je m'y habituer ? Plus tôt, j'avais réalisé un exercice me demande de créer une fonction volBoite ( vous vous en souvenez peut être ).

    Cette fois-ci on me demande de reprendre cette fonction, mais d'y intégrer des valeurs au paramètres :

    def volBoite ( x = 10, y = 10, z = 10 )

    Puis de pouvoir appeler cette fonction avec 3 arguments, 2 arguments, 1 argument ou aucun argument. Donc tout simplement si j'appel :

    volBoite() --> j'obtiens 1000
    volBoite(2, 5) --> j'obtiens 520 etc...

    La encore ma logique, ou plutôt mon raisonnement me semble correct et pourtant je n'obtiens pas le résultat attendu. Pourquoi ?

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    # -*- coding: utf-8 -*-
     
    ####################################
    # Programme Python Type            #
    # Sujet : exercice e.56            #
    ####################################
     
    ####################################
    # Définire une fonction            #
    # volBoite qui renvoie le          #
    # volume d'une boite.              #
    ####################################
     
     
    ####################################
    # Définition de(s) fonctions :     #
    ####################################
     
    def volBoite(x=10, y=10, z=10):
        return (x * y * z)
     
     
    ####################################
    # corps principal du programme     #
    ####################################
     
    print ("Veuillez entrer la premiere valeur:")
    val1 = (raw_input())
    print ("Veuillez entrer la seconde valeur:")
    val2 = (raw_input())
    print ("Veuillez entrer la troisieme valeur:")
    val3 = (raw_input())
     
    volume = volBoite()
     
    if val1 == str("") and val2 == str("") and val3 == str(""):
        volume = volBoite()
        print(volume)
    elif val1 != 10:
        volume = volBoite(float(val1))
        print(volume)
    elif val1 != 10 and val2 != 10:
        volume = volBoite(float(val1), float(val2))
        print(volume)
    elif val1 != 10 and val2 != 10 and val3 != 10:
        volume = volBoite(float(val1), float(val2), float(val3))
        print(volume)
    ps : Comment installer le module tkinter sur ma machine ? Je tourne sur mac.

  11. #11
    Membre éprouvé
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Points : 1 006
    Points
    1 006
    Par défaut
    Salut,
    le fait que tu ais pris <10> comme leitmotiv, n'était pas une bonne idée. En fait, hors de la déclaration de ta fonction, tu dois carrément l'oublier. Ce qu'il est demandé (à mon humble avis - amha) dans l'exercice, c'est de pouvoir ordonner les paramètres lors de l'appel de ta fonction. Ici, par position.
    En supposant que val1 corresponde à x, val2 à y val3 à z (abcisses, ordonnées et côte bref...)

    Tu devrais produire quelque chose de la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     if val1 existe and val2 existe and val3 existe:
        volBoite(val1, val2, val3)
     elif val1 existe and val2 existe:
        volBoite(val1, val2)
     elif val1 existe:
        volBoite(val1)
     else:
        volBoite()
    Il ne reste plus qu'à toi de trouver comment coder ce "existe"

    C'est clair au moins j'espère

    ps: pourquoi convertis-tu toujours les string en string?
    str("")
    str("ca")
    Ca fait "N'a pas compris ses lecons" et "fait tourner le moteur au péter l'Interpréteur pour rien"
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2011
    Messages : 65
    Points : 36
    Points
    36
    Par défaut
    j'ai pu contourner le problème de la façon suivante :

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    # -*- coding: utf-8 -*-
     
    ####################################
    # Programme Python Type            #
    # Sujet : exercice e.56            #
    ####################################
     
    ####################################
    # Définire une fonction            #
    # volBoite qui renvoie le          #
    # volume d'une boite.              #
    ####################################
     
     
    ####################################
    # Définition de(s) fonctions :     #
    ####################################
     
    def volBoite(x=10, y=10, z=10):
        return (x * y * z)
     
     
    ####################################
    # corps principal du programme     #
    ####################################
     
    print ("Veuillez entrer la premiere valeur:")
    val1 = (raw_input())
    print ("Veuillez entrer la seconde valeur:")
    val2 = (raw_input())
    print ("Veuillez entrer la troisieme valeur:")
    val3 = (raw_input())
     
    volume = volBoite()
     
    if val1 == str("") and val2 == str("") and val3 == str(""):
        volume = volBoite()
        print(volume)
    elif val1 != 10 and val2 == str("") and val3 == str(""):
        volume = volBoite(float(val1))
        print(volume)
    elif val1 != 10 and val2 != 10 and val3 == str(""):
        volume = volBoite(float(val1), float(val2))
        print(volume)
    elif val1 != 10 and val2 != 10 and val3 != 10:
        volume = volBoite(float(val1), float(val2), float(val3))
        print(volume)
    Il doit très certainement il y avoir moins compliqué, mais je voulais rester sur mon idée de départ. Cette fois-ci tout fonctionne comme sur des roulettes. Même si les choses peuvent paraître compliqué ( pas pour vous je m'en doute bien ) aux premiers abords, je m'y retrouve parfaitement.

    fait tourner le moteur au péter l'Interpréteur pour rien"
    Qu'est-ce que tu entends par la exactement ?

  13. #13
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    En fait le sujet étant les arguments par défaut ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def volBoite(x=10, y=10, z=10):
        return (x * y * z)
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    volume = volBoite(float(val1))
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    volume = volBoite(float(val1), float(val2))
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    volume = volBoite(float(val1), float(val2), float(val3))
    répondent à la question.

    Pour le reste c'est vous qui compliquez, encore, la chose avec la saisie utilisateur (libre à vous).
    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
    print ("Veuillez entrer la premiere valeur:")
    val1 = (raw_input())
    print ("Veuillez entrer la seconde valeur:")
    val2 = (raw_input())
    print ("Veuillez entrer la troisieme valeur:")
    val3 = (raw_input())
     
    volume = volBoite()
     
    if val1 == str("") and val2 == str("") and val3 == str(""):
        volume = volBoite()
        print(volume)
    elif val1 != 10 and val2 == str("") and val3 == str(""):
        volume = volBoite(float(val1))
        print(volume)
    elif val1 != 10 and val2 != 10 and val3 == str(""):
        volume = volBoite(float(val1), float(val2))
        print(volume)
    elif val1 != 10 and val2 != 10 and val3 != 10:
        volume = volBoite(float(val1), float(val2), float(val3))
        print(volume)
    Pour rester sur le sujet, et toujours avec ce qui a été appris dans le tuto:
    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
    def volBoite(x=10, y=10, z=10):
        return (x * y * z)
     
    print ("Veuillez entrer la premiere valeur:")
    val1 = raw_input()
    print ("Veuillez entrer la seconde valeur:")
    val2 = raw_input()
    print ("Veuillez entrer la troisieme valeur:")
    val3 = raw_input()
     
    arguments = []
    for v in (val1, val2, val3):
        if v:
            arguments.append(int(v))
    volume = volBoite(*arguments)
    print(volume)
    @+
    Merci d'utiliser le forum pour les questions techniques.

  14. #14
    Membre éprouvé
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Points : 1 006
    Points
    1 006
    Par défaut
    Citation Envoyé par suppadrakn Voir le message
    Qu'est-ce que tu entends par la exactement ?
    Écrire Ca serait comme faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    a = ""
    a = ""#Deux fois la même instruction
    Tu as encore pris 10 comme nombre magique dans ton programme principal. Ca n'est vraiment, vraiment, vraiment pas une bonne idée.

    Les comments précédents l'expliquaient (je pense?) pourtant bien.
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

  15. #15
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonsoir,

    Comme vous le savez avec vos précédents posts je ne suis pas pour votre utilisation de float(raw_input())/int(raw_input()) ou encore volume = volBoite(float(val1), float(val2), float(val3))...
    Pourquoi ? Car vous ne gérez pas l'erreur possible par rapport à l'entrée utilisateur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> v = 'a'
    >>> int(v)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    ValueError: invalid literal for int() with base 10: 'a'
    Je vous propose deux exercices sur la base du tuto qui respectent ce que vous avez vus jusqu’ici:

    Exercice 1.1:
    Définissez une fonction ValidConvert(valeur, convert) permettant de vérifier si le texte résultant de valeur = raw_imput() est convertible en int/float, convert indiquant si c'est le type demandé est int ou float. La fonction doit retourner la valeur convertie ou 'rien'(1).
    Exemple d'utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    def ValidConvert(value, convert):
        ....
     
    val = raw_input("Veuillez entrer votre texte: ")
    print ValidConvert(val, int)
    #
    print ValidConvert(raw_input("Veuillez entrer votre texte: "), float)
    #
    val = raw_input("Veuillez entrer votre texte: ")
    if ValidConvert(val, int):
        print "ok"
    Exercice 1.2:
    Définissez une fonction ConvImput remplaçant raw_input() avec pour argument le type de donnée demandé (int, float) et, optionnellement, le message pour l'utilisateur (voir les valeurs par défaut).
    Cette fonction doit retourner la valeur convertie du texte saisi par l'utilisateur ou 'rien'(1)
    Exemple d'utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    val = ConvImput(float, "Veuillez entrer votre chaine de caractere: ")
    if val:
       print(val)
    (1) Voir ce qui est None/False dans vos précédents posts.
    Merci d'utiliser le forum pour les questions techniques.

  16. #16
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Pas motivé ?
    Merci d'utiliser le forum pour les questions techniques.

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2011
    Messages : 65
    Points : 36
    Points
    36
    Par défaut
    J'avoue effectivement que les exercices ne m'attirent pas beaucoup....Je travail actuellement sur un petit programme "Zcasino", similaire à celui du poste suivant :

    http://www.developpez.net/forums/d12...mes-programme/

    Plus amusant il faut l'avouer...Et je vous direz que dans ma situation, il est impératif que ce soit amusant

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Septembre 2011
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2011
    Messages : 65
    Points : 36
    Points
    36
    Par défaut
    De mon côté voila ce que ça a donné, toujours à ma façon et en essayant de conforter ce que je sais déjà :


    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
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    # -*- coding: utf-8 -*-
    from random import randrange
     
    ## --- ! le joueur arrive ! --- ##
     
    credit = 250
    continuer_partie = True
     
     
    print("vous disposez d'un crédit de 250 $, amusez-vous bien")
    print("mais n'oubliez pas, ceci est un jeu et doit le rester")
    print("pour information, les nombres pairs sont noir et")
    print("les impairs sont rouges.")
     
    while credit > 0:
        continuer_partie = True
        print("Combien voulez vous misez ?")
        mise = int(raw_input())
        if mise > 250 or mise <= 0:
            print("Veuillez s'il vous plait entrer une valeur entre 0 et 250")
            mise = int(raw_input())
        else:
            print("C'est partit faite vos jeux !'")
     
    ##  Faite vos jeux  ##
     
        print ("Sur quel numero voulez-vous misez (entre 1 et 49) ?")
        numero = int(raw_input())
        if numero <= 0 or numero > 49:
            print("Nous avons un probleme a la table numero 1")
            print("Sur quel numero voulez-vous misez (entre 1 et 49) ?")
            numero = int(raw_input())
     
    ##  Le croupier lance la roulette ##
     
        resultat = randrange(1, 50)
     
    ##  Le numero du joueur est identique a celui ou s'arrete la boule  ##
     
        if resultat == numero:
            print("vous avez gagner ! Felicitation ! Vous raflez 3 fois la mise")
            credit == credit + (mise * 3)
            print("crédit =", credit)
     
    ##  Le numero du jouer est différent mais de même couleur ##
     
        if resultat % 2 == 0 and numero % 2 == 0:
            print("Et nous avons le", resultat, "noir")
            print("Vous etes plutôt chanceux, vous recuperez 50% de votre mise")
            credit = credit + (mise * 0.5)
            print(credit)
     
        if resultat % 2 != 0 and numero % 2 != 0:
            print("Et nous avons le", resultat, "rouge")
            print("Vous etes plutot chanceux, vous recuperez 50% de votre mise")
            credit = credit + (mise * 0.5)
            print("credit =", credit)
     
    ##  Le numero du joueur est différent et pas de la même couleur  ##
     
        if resultat % 2 != 0 and numero % 2 == 0:
            print ("Et nous avons le", resultat, "rouge")
            print("Desole vous perdez votre mise")
            credit = credit - mise
            print("credit =", credit)
     
        if resultat % 2 == 0 and numero % 2 != 0:
            print("Et nous avons le", resultat, "noir")
            print("Desole vous perdez votre mise")
            credit = credit - mise
            print("credit =", credit)
     
        if credit > 0:
            continuer_partie == True
            print ("Combien voulez-vous misez ?")
     
    ##  Si le joueur n'a plus d'argent  ##
     
        if credit == 0:
            print("Désolé, vous n'avez plus d'argent")
            print("Entre nous c'est peut etre mieux ainsi")
            continuer_partie = False
    Au fait il y en a t-il parmi vous qui on prévu de participer au PyWeek ?

Discussions similaires

  1. Réponses: 7
    Dernier message: 12/10/2013, 16h41
  2. Réponses: 2
    Dernier message: 24/04/2008, 16h42
  3. les event de IBQuery pour activer,desactiver la Transaction?
    Par amad206 dans le forum Bases de données
    Réponses: 1
    Dernier message: 31/03/2005, 14h12

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