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 :

Question de grand débutant [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2004
    Messages : 12
    Par défaut Question de grand débutant
    Bonjour à tous,

    Désireux de découvrir un peu la programmation python, je suis le bouquin de Swinnen en essayant de faire les exercices au fur et à mesure.

    J'ai un soucis sur le 5.8 qui demande de transformer une chaîne "gaston" en "g*a*s*t*o*n".

    Voici ce que j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ch = "gaston"
    l = len(ch)
    ch2 = ""
    a = 0
    while a < l:
        ch2 = ch2 + ch[a] + "*"
        a = a + 1
        print ch2,
    Le problème c'est que le résultat s'affiche sous cette forme : g* g*a* g*a*s* g*a*s*t* g*a*s*t*o* g*a*s*t*o*n*

    Comment faire pour que seul le résultat final s'affiche et pas les résultats intermédiaires?

    Pour exclure le dernier caractère, pensez vous qu'il faille insérer un test dans la bouche du WHILE ou il y aurait une solution plus simple?

    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Python a de chouettes solutions pour ce genre de problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print "*".join("gaston")
    'g*a*s*t*o*n'
    Dans ton code, le print affiche la chaine intermédiaire ch2, et avec la virgule, toutes les chaines intermédiaires sont affichées sur la même ligne: Python a parfaitement respecté ce que tu lui as demandé.

    Si tu veux que le résultat apparaisse progressivement à chaque boucle, il faut afficher uniquement ce que tu as ajouté à chaque boucle: ch[a] + "*".

    Et ajouter un print à la fin pour ajouter une fin de ligne.

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2004
    Messages : 12
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Bonjour,

    Python a de chouettes solutions pour ce genre de problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    print "*".join("gaston")
    'g*a*s*t*o*n'
    Dans ton code, le print affiche la chaine intermédiaire ch2, et avec la virgule, toutes les chaines intermédiaires sont affichées sur la même ligne: Python a parfaitement respecté ce que tu lui as demandé.

    Si tu veux que le résultat apparaisse progressivement à chaque boucle, il faut afficher uniquement ce que tu as ajouté à chaque boucle: ch[a] + "*".

    Et ajouter un print à la fin pour ajouter une fin de ligne.
    Merci pour ta réponse. C'est en effet très pratique . Mais malheureusement je ne connaissais pas cette instruction.

  4. #4
    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,

    Si tu mets ton print() à l'intérieur de la boucle, c'est normal que chaque itération soit affichée.

    Met le print() après la boucle.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2004
    Messages : 12
    Par défaut
    Citation Envoyé par VinsS Voir le message
    Salut,

    Si tu mets ton print() à l'intérieur de la boucle, c'est normal que chaque itération soit affichée.

    Met le print() après la boucle.
    Merci.

    Le problème c'est que si j'écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ch = "gaston"
    l = len(ch)
    ch2 = ""
    a = 0
    while a < l:
        ch2 = ch2 + ch[a] + "*"
        a = a + 1
    print ch2
    J'obtiens une erreur de syntaxe

    Désolé pour ces questions idiotes...

  6. #6
    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
    Tu utilises bien Python 2 ?

    La seule erreur possible serait que tu utilises Python 3, qui demande des parenthèses au print.

    À quel endroit est indiquée l'erreur ?

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Mars 2004
    Messages : 12
    Par défaut
    Je suis sous python 3

    J'ai testé avec les parenthèses, j'obtiens la même erreur de syntaxe. Le petit symbole indique le "t" de "print".

  8. #8
    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
    Aucun problème chez moi.

    Recopie ton code de ton post ci-dessus dans ton script.

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

Discussions similaires

  1. 2 questions de grand débutant
    Par lamaison dans le forum jQuery
    Réponses: 5
    Dernier message: 12/11/2009, 09h17
  2. Question de grand débutant
    Par Maxoow dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/05/2009, 12h23
  3. grand débutant, petite question
    Par derhyl dans le forum Flash
    Réponses: 5
    Dernier message: 23/02/2007, 15h07
  4. question d'un débutant...
    Par chti_juanito dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 01/06/2005, 10h29

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