Turtle Python
Résolu
Smoodie
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
j'ai un petit probleme au niveau de mon code, je cherche a faire un outil qui convertie les pourcentages en graphique sur turtle (graphique circulaire) mais le probleme est que des fois un traits se superpose sur les segments de couleurs (exemple si dessus)
Le probleme vient surement de la façon dont est dessiné le cercle mais je ne sais pas comment fix l'erreur
Voila mon code (pas tout le code mais la fonction) :
def draw_circle_parts(angles, colors, radius, max_arc_length=50): t = turtle.Turtle() t.speed("fastest") t.penup() t.goto(0, -radius) t.pendown() total_angle = sum(angles) for i, angle in enumerate(angles): t.fillcolor(colors[i]) t.begin_fill() t.goto(0, 0) t.setheading(90) start_angle = sum(angles[:i]) end_angle = start_angle + angle arc_length = radius * math.pi * angle / 180 for j in range(int(start_angle), int(end_angle)): t.goto(radius * math.cos(j * math.pi / 180), radius * math.sin(j * math.pi / 180)) t.goto(0, 0) t.end_fill() if arc_length > max_arc_length: t.penup() angle_percent = round(angle / total_angle * 100, 2) t.goto(radius * 0.8 * math.cos((start_angle + end_angle) / 2 * math.pi / 180), radius * 0.8 * math.sin((start_angle + end_angle) / 2 * math.pi / 180)) t.pendown() t.write(f'{angle_percent}%', align='center', font=('Arial', 8, 'normal')) t.penup() t.hideturtle() turtle.done()
Windows / Edge 110.0.1587.57
2 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
ton code ne fait rien. cela me semble normal, sans appel à la fonction.
j'ai preciser entre les parenthèse que ce n'est qu'un extrait de tout le code, c'est le code qui permet la generation du cercle, le calcul des pourcentages en degrees etc... se fait dans une autre fonction, le probleme que j'ai c'est seulement la ligne qui se superpose sur le premier segments de couleurs seulement (si par exemple le premier segment du cercle n'atteint pas la ligne, le deuxieme/troisieme/etc.. segment se superposera sur la ligne sans probleme
PS : quand je parle d'erreur je parle surtout du probleme en lui même
comment appelles-tu la fonction?
je ne suis pas un debutant en python mais, en turtle oui, voila comment je l'appele :
Sinon le code marche très bien aucune erreur dans ma console, le vrai probleme est dans la façon dont le cercle/le premier segments (je ne sais pas pour le coup) est dessiner
Peux-tu partager un code qui ne pose pas de question?
pour t'expliquer en bref, le script est censé generer plusieurs type de graphique, le graphique a barre, et le graphique circulaire le "match graphic" est une nouvelle fonctionnalité python depuis la 3.10 qui remplace un peu les if graphic == '1': elif graphic == '2'
puis si l'utilisateur a choisi 1 (ne prend pas en compte case '2' c'est pour le graphique a barre) on recupère le pourcentage puis en le convertie en degrees toute en l'ajoutant a la liste angles, puis en demande la couleurs qu'on veut du segment de cercle (par ex : '100', puis 'red', nous affichera 100% du cercle en rouge, comme l'exemple toute eeeeen haut), puis lorsqu'on arrive a 100 (sans la depasser) on arrete la boucle et on appele la fonction 'draw_circle_parts(angles, colors, 200)', j'espere que tu as un peu mieux compris mon code.