je pose ici une solution différente de celle proposé par g.swinnen dans son cours Python.
Cela s'adresse en particulier a ceux qui comme moi apprenne Python et qui souhaitent confronter leur solution d'un même exercice.
ennoncé: Créer un court prog dessinnant les cinq anneaux olympiques, dans un rectangle de fond blanc.
solution G.Swinnen:
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 from Tkinter import * # Coordonnées X,Y des 5 anneaux : coord = [[20,30], [120,30], [220, 30], [70,80], [170,80]] # Couleurs des 5 anneaux : coul = ["red", "yellow", "blue", "green", "black"] base = Tk() can = Canvas(base, width =335, height =200, bg ="white") can.pack() bou = Button(base, text ="Quitter", command =base.quit) bou.pack(side = RIGHT) # Dessin des 5 anneaux : i = 0 while i < 5: x1, y1 = coord[i][0], coord[i][1] can.create_oval(x1, y1, x1+100, y1 +100, width =2, outline =coul[i]) i = i +1 base.mainloop()
Mon code: Je trouvais bete de def les coordonnées des cinq anneaux
certe c'est un peu plus long, mais j'evite de definir une variable avec les coordonnées de chaque anneaux (alors que python se les calcule seul), et puis j'utilise une fonction pour dessinner mes cercles.
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 def anneau(): global x1,y1,coul,a can1.create_oval(x1,y1,x1+60,y1+60,outline=coul[a]) x1,y1=x1+60,y1 ########## from Tkinter import * fen=Tk() Button(fen,text='Quitter',command=fen.quit).grid(row=0,column=1,padx=5,pady=5,sticky=S) can1=Canvas(fen,bg='white',height=150,width=220) can1.grid(row=0) a=-1 x1,y1=20,50 coul=['blue','red','yellow','green','grey'] while a<2: a=a+1 anneau() x1,y1=50,80 while a<4: a=a+1 anneau() fen.mainloop()
Par exemple je n'ai pas réussi a me passer de "global" dans ma fonction.
Si qqu'un a une variante, je suis intérréssé.
Edit par Guigui_: le gras remplacé par les balises [Code]
Partager