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 :

Remplacer un certain pourcentage de caractère par un autre


Sujet :

Python

  1. #21
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2021
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Dans l'exemple présenté à l'énoncé, chaque branche commence et finit toujours par des double quotes.
    Tant que les quotes et les doubles quotes sont alternées, il n'y a pas de problème (j'ai demandé à mon prof).

  2. #22
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 008
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 008
    Points : 9 409
    Points
    9 409
    Par défaut
    hello,
    Citation Envoyé par Bullit00 Voir le message
    Voici comment j'ai fais au final si ça intéresse quelqu'un, ce n'est surement pas parfait mais je trouve que je me suis bien débrouillé pour un débutant.

    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
    import random
     
    def sapin(n):
        print ((2*n - 2)*" " + "*")
        print ((2*n - 2)*" " + "^")
     
        for k in range(1, n):
            leaf_1 = ("'" + '"')*(k - 1)
            leaf_2 = ('"' + "'")*(k - 1)
            christmas = ""
            finish_2 = str(random.choices(['"', "o"], weights = (5, 1)))
            finish_1 = str(random.choices(["'", "o"], weights = (5, 1)))
     
            if k%2 == 0:
                for x in leaf_2:
                    if x == '"':
                        christmas += str(random.choices(['"', "o"], weights = (5, 1)))
                    else:
                        christmas += str(random.choices(["'", "o"], weights = (5, 1)))
     
                print (((2*n - 2) - k)*" " + "/" + christmas[2:len(christmas):5] + finish_2[2] + "\\")      
     
            else:
                for y in leaf_1:
                    if y == '"':
                        christmas += str(random.choices(['"', "o"], weights = (5, 1)))
                    else:
                        christmas += str(random.choices(["'", "o"], weights = (5, 1)))
     
     
     
                print (((2*n - 2) - k)*" " + "/" + christmas[2:len(christmas):5] + finish_1[2] +"\\")
     
     
     
        for p in range(3):    
            print ((2*n - 3)*" " + "|||")
     
    sapin(20)
    Effectivement Félicitations, le code a l'air de bien fonctionner.
    J'ai fait un test pour savoir si tu avais les 20 % de boules à chaque fois sur trois exécutions.
    Voici les résultats :
    361 (feuilles + boules)
    nb boules
    69 --> 19,11 %
    64 --> 17,72 %
    68 --> 18,83 %
    Il est certain qu'en faisant un tirage aléatoire par ligne cela va être difficile de se rapprocher de 20% à chaque exécution (A moins de compenser à la fin).
    Avec mon code qui mémorise l'ensemble du sapin et fait donc le tirage aléatoire qu'à la fin j'ai toujours le même nombre de boules :
    361
    72 --> 19,94 %
    72 --> 19,94 %
    72 --> 19,94 %
    Mais c'est plus lourd à gérer.
    Il faudra voir avec ton prof si la tolérance sur le nombre de boules lui convient avec ta solution.
    Le truc pour compter les feuilles et les boules :
    Après exécution copier coller le sapin dans Notepad++
    Lancer Recherche/Rechercher et cocher la case Mode de recherche : Expression régulière.
    Pour chercher l'ensemble feuilles + boules --> saisir "|'|o dans le champ de saisie Recherche et cliquer sur le bouton Compter
    Pour chercher les feuilles --> saisir o dans le champ de saisie Recherche et cliquer sur le bouton Compter

    Ami calmant, J.P

  3. #23
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 720
    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 720
    Points : 31 042
    Points
    31 042
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Bullit00 Voir le message
    C'est ce que j'ai fais, mais ligne par ligne :
    Il y a quand-même beaucoup de redondances. Par exemple le choix entre feuille ou boule tu le fais 4 fois parce que tu te bases à chaque fois sur la représentation qu'aura la feuille à l'écran.
    En programmation (programmation professionnelle) on sépare le coeur du code de sa représentation visuelle. Si par exemple tu dis "je choisis une valeur X représentant la feuille et une autre Y représentant la boule" puis "je décide si ici il faut un X ou un Y" puis "j'affiche ma valeur X ou Y telle qu'elle doit être vue à l'écran" ton code en serait simplifié. Ca t'éviterait tous ces leaf_1 leaf_2 finish_1 finish_2.
    C'est ce qu'avait tenté de t'expliquer wiztricks quand il te parlait de [True, True, True, True, False].
    Pas mal d'avoir trouvé le paramètre "weights" pour le choice().

    Citation Envoyé par jurassic pork Voir le message
    J'ai fait un test pour savoir si tu avais les 20 % de boules à chaque fois sur trois exécutions.
    Je pense quand-même que la solution "calculer combien il faut de boules dès le départ" reste plus efficace. De fait en essayant son code je suis arrivé à seulement 56 boules (soit 15%).

    Citation Envoyé par jurassic pork Voir le message
    Pour chercher l'ensemble feuilles + boules --> saisir "|'|o dans le champ de saisie Recherche et cliquer sur le bouton Compter
    Mouais. On peut aussi dire "il y a 19 branches garnies donc il y aura 19²=361 feuilles+boules

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [Débutant] Remplacer une sélection avec des caractères "*" par un autre
    Par canardav77 dans le forum VB.NET
    Réponses: 6
    Dernier message: 26/10/2012, 16h29
  2. Réponses: 3
    Dernier message: 21/07/2007, 01h48
  3. Remplacer un caractère par un autre
    Par cybkilla dans le forum Sybase
    Réponses: 3
    Dernier message: 08/01/2007, 15h42
  4. JSP : comment remplacer une chaine de caractères par une autre
    Par techquos dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/12/2006, 09h37
  5. Réponses: 8
    Dernier message: 15/07/2006, 18h59

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