Afficher un sapin de Noël en python

Fermé
nf.moku Messages postés 5 Date d'inscription dimanche 6 novembre 2022 Statut Membre Dernière intervention 6 novembre 2022 - Modifié le 8 nov. 2022 à 14:43
mamiemando Messages postés 33132 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 mai 2024 - 8 nov. 2022 à 14:49

Bonjour,

Je travaille sur un devoir sur les chaîne de caractère à rendre pour demain mais cela fait un moment que je bloque et je n'arrive pas à avancer sur la suite donc je sollicite de l'aide . 

L'exercice consiste à faire un sapin de noël , mais je suis bloqué sur le feuillage et les boules de noël .

Voila ce que j'ai commencé à faire :

def sapin_de_noel():
    print(" "*8+"*")
    print(" "*8+"^")
    for i in range(1,8):
        print(" "*(8-i)+"/" +" "*(i*2-1)+"\\")
    for k in range(3):
        print(" "*7+"|||")
        *
        ^
       / \
      /   \
     /     \
    /       \
   /         \
  /           \
 /             \
       |||
       |||
       |||

Et donc il faut modifier le programme afin d'afficher la texture du feuillage , en alternant les guillemets simple(') et double(") et puis dans ce feuillage faire afficher des boules de noël aléatoirement . 

Je pense que l'exercice doit être assez simple mais j'ai du mal à comprendre sinon je vous remercie d'avance :) .  
 

7 réponses

Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
Modifié le 6 nov. 2022 à 11:53

C'est mieux

Maintenant, il n'y a plus qu'à insérer les guillemets et les boules dans la 1ere boucle for,

juste entre l'affichage de de / et celui de \, en calculant les espaces en fonction de i comme tu

le fait déjà pour / et \

Mais tel quel, ton code n'affiche rien: tu défini une fonction, mais tu ne l'appelles pas

0
nf.moku Messages postés 5 Date d'inscription dimanche 6 novembre 2022 Statut Membre Dernière intervention 6 novembre 2022
6 nov. 2022 à 13:59

Mais comment on fait pour que les guillemets s'alternent? ( c'est surtout ça que je n'ai pas très bien compris )

0
yg_be Messages postés 22833 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 mai 2024 1 471
6 nov. 2022 à 14:05

peut-être en créant une fonction qui renvoie une chaine avec des guillemets alternés?

0
nf.moku Messages postés 5 Date d'inscription dimanche 6 novembre 2022 Statut Membre Dernière intervention 6 novembre 2022
6 nov. 2022 à 14:19

et sa donne se résultat :

0
yg_be Messages postés 22833 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 mai 2024 1 471
6 nov. 2022 à 22:03

c'est bien, tu te rapproches de la solution!

0
nf.moku Messages postés 5 Date d'inscription dimanche 6 novembre 2022 Statut Membre Dernière intervention 6 novembre 2022
6 nov. 2022 à 15:42

avez vous une idée de ce qu'il peut y avoir ?

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PierrotLeFou
6 nov. 2022 à 18:18

Tu peux écrire  "'" et '"'
Et que donnera selon toi: '"'+"'" ?
Sais-tu ce qu'est le slicing?

0
mamiemando Messages postés 33132 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 mai 2024 7 755
8 nov. 2022 à 14:49

Bonjour

Pour écrire alternativement des A et des B tu peux écrire par exemple :

s = ""
for i in range(10):
    s += "A" if i % 2 == 0 else "B"
print(s) # Affiche "ABABABABAB"

ou mieux :

s = "".join(
    "A" if i % 2 == 0 else "B"
    for i in range(10)
)
print(s) # Affiche "ABABABABAB"

ou encore mieux :

s = "AB" * 5
print(s) # Affiche "ABABABABAB"

Il ne reste plus qu'à intégrer l'une de ces recettes à ton code.

Bonne chance

0
nf.moku Messages postés 5 Date d'inscription dimanche 6 novembre 2022 Statut Membre Dernière intervention 6 novembre 2022
6 nov. 2022 à 14:16

J'ai essayer en ajoutant une condition mais sa n'a pas l'air de fonctionner , il doit y avoir un problème au print de la première boucle surement mais je ne sais pas ce qu'il faut ajouter 

def sapin_2():
    print(" "*8+"*")
    print(" "*8+"^")
    feuillage=""
    for i in range(1,8):
        if feuillage=="\"" :
            feuillage=feuillage+"'"
        else:
            feuillage=feuillage+"\""
        print(" "*(8-i)+"/"+feuillage*(i*2-1)+"\\")
    for k in range(3):
        print(" "*7+"|||")

 et je sais pas si je dois utiliser plusieurs fonction mon prof ne l'a pas mentionner 

-1