PYTHON 2 . FEUILLE n° 33 ALGORITHME
Thème:
Visualisation avec l'interface Tkinter.
------------------------------------------------------------------------------------
EXERCICE 1
Donner un algorithme qui à partir d'un point * fait apparaître une flèche
vers la droite si l'on saisit 1 ou une flèche vers le bas si l'on saisit 0.
-----------------------------------------------------------------------------------------------------
REPONSE:
On peut considérer par exemple:
from random import*
import Tkinter
def mulot():
print " 1 signifie pour un déplacement vers la droite"
print " 0 signifie pour un déplacement vers le bas"
n=input(" indiquer un déplacement ")
cadre =Tkinter.Tk()
fond=Tkinter.Canvas(cadre, width=400, height=380, background='white')
fond.pack()
fond.create_text(15,20, text="*", font="Arial 16 ", fill="black")
a=22
b=15
if n==1:
fond.create_line((a,b,a+20,b),fill="red",width=2)
fond.create_text(a+20,b, text=">", font="Arial 16 ", fill="red")
else:
fond.create_line((a,b,a,b+20),fill="red",width=2)
fond.create_text(a,b+20, text="v", font="Arial 16", fill="red")
cadre.mainloop()
On obtient par exemple:
>>> mulot()
1 signifie pour un déplacement vers la droite
0 signifie pour un déplacement vers le bas
indiquer un déplacement 1
Ou encore
>>> mulot()
1 signifie pour un déplacement vers la droite
0 signifie pour un déplacement vers le bas
indiquer un déplacement 0
-----------------------------------------------------------------------------------------------------
EXERCICE 2
1. Donner un algorithme qui à partir d'un point A* fait apparaître dix flèches
vers la droite ou vers le bas quand on saisit une liste de dix
0 ou 1 pour aboutir à un point * B .
2. Pour le choix de la liste que vous avez fait combien
de chemins sont-ils possibles?
-----------------------------------------------------------------------------------------------------------
REPONSE:
On peut considérer :
from random import*
import Tkinter
def mul():
print " 1 signifie pour un déplacement vers la droite"
print " 0 signifie pour un déplacement vers le bas"
L=input(" indiquer une liste de dix 0 ou 1 ")
cadre =Tkinter.Tk()
fond=Tkinter.Canvas(cadre, width=400, height=380, background='white')
fond.pack()
fond.create_text(15,20, text="A*", font="Arial 16 ", fill="black")
a=22
b=15
for n in L:
if n==1:
fond.create_line((a,b,a+20,b),fill="red",width=2)
fond.create_text(a+20,b, text=">", font="Arial 16 ", fill="red")
a=a+26
else:
fond.create_line((a,b,a,b+20),fill="red",width=2)
fond.create_text(a,b+20, text="v", font="Arial 16", fill="red")
b=b+26
fond.create_text(a,b+3, text=" * B", font="Arial 16 ", fill="black")
cadre.mainloop()
On obtient par exemple:
>>> mul()
1 signifie pour un déplacement vers la droite
0 signifie pour un déplacement vers le bas
indiquer une liste de dix 0 ou 1 [1,0,1,1,0,0,1,0,0,1]
2. La liste ici saisie compte 5 fois le 1, donc ( 10 - 5 fois le 0).
Il y a donc autant de chemins de A à B que de façons de choisir 5 places
parmi les 10 places de la liste.
Il y en a donc
Il y a 252 chemins de A à B dans le cas où il y a 5 déplacemenst à droite
et 5 déplacements vers le bas.
-------------------------------------------------------------------------------------
EXERCICE 3
Reprendre la première question de l'exercice précédent
en faisant apparaître un damier vert.
-----------------------------------------------------------------------------------------
REPONSE:
On peut considérer:
from random import*
import Tkinter
def moult():
print " 1 signifie pour un déplacement vers la droite"
print " 0 signifie pour un déplacement vers le bas"
L=input(" indiquer une liste de dix 0 ou 1 ")
cadre =Tkinter.Tk()
fond=Tkinter.Canvas(cadre, width=400, height=380, background='white')
fond.pack()
fond.create_text(15,20, text="A *", font="Arial 16 ", fill="black")
a=22
b=15
for i in range(0,11):
fond.create_line((22+i*26,15,22+i*26,15+260),fill="green",width=1)
for j in range(0,11):
fond.create_line((22,15+j*26,22+260,15+j*26),fill="green",width=1)
for n in L:
if n==1:
fond.create_line((a,b,a+20,b),fill="red",width=2)
fond.create_text(a+20,b, text=">", font="Arial 16 ", fill="red")
a=a+26
else:
fond.create_line((a,b,a,b+20),fill="red",width=2)
fond.create_text(a,b+20, text="v", font="Arial 16", fill="red")
b=b+26
fond.create_text(a,b+3, text=" * B", font="Arial 16 ", fill="black")
cadre.mainloop()
On obtient par exemple:
>>> moult()
1 signifie pour un déplacement vers la droite
0 signifie pour un déplacement vers le bas
indiquer une liste de dix 0 ou 1 [1,0,1,1,0,0,1,0,0,1]
--------------------------------------------------------------------------------------------------------