
\textbf{Réflexions préliminaires:}
\begin{itemize}
\item \textit{Comment choisir au hasard la direction du kangourou ?}

Dès qu'il s'agit de faire un choix au hasard, il faut penser au module \texttt{random}. Ici, nous avons quatre directions possibles, que l'on peut mettre dans une liste (par exemple, \texttt{L = [ 'droite' , 'gauche' , 'haut' , 'bas' ]}. Il s'agit alors de choisir au hasard un élément de cette liste; on peut donc utiliser la fonction \texttt{choice(L)}.

\item \textit{Tenir compte du nombre de secondes.}

$n$ représente le nombre de secondes, donc le nombre de fois que l'on devra faire un choix aléatoire de direction. Il faudra utiliser une boucle itérative \og for \fg.
\end{itemize}

Une fonction possible est alors la suivante:

\begin{python}
from random import choice

def trajet(n):
    L = [ 'droite' , 'gauche' , 'haut' , 'bas' ]
    (x , y) = (0 , 0) # position initiale du kangourou
    for k in range(n):
        direction = choice(L)
        if direction == 'droite':
            x = x + 1
        elif direction == 'gauche':
            x = x - 1
        elif direction == 'haut':
            y = y + 1
        else:
            y = y - 1

    return (x , y) # coordonnées finale du kangourou
\end{python}

Je souhaite aller plus loin en montrant le chemin emprunté par le kangourou lors du trajet. Pour cela, je vais stocker dans une liste les différentes positions du kangourou après chaque saut.

\begin{python}
def trajet(n):
    L = [ 'droite' , 'gauche' , 'haut' , 'bas' ]
    P = [ (0,0) ] # liste où l'on mettra les positions du kangourou après chaque saut
    (x , y) = (0 , 0) # position initiale du kangourou
    for k in range(n):
        direction = choice(L)
        if direction == 'droite':
            x = x + 1
        elif direction == 'gauche':
            x = x - 1
        elif direction == 'haut':
            y = y + 1
        else:
            y = y - 1
        # on ajoute à la liste P la position du kangourou après le saut
        P.append( (x,y) ) # ajout à P
    return P
\end{python}
\begin{console}
>>> trajet(5)
[(0,0), (0, 1), (1, 1), (0, 1), (0, 2), (0, 3)]
\end{console}

\begin{python}
from random import choice
from matplotlib.pyplot import arrow, grid, show, ylim, xlim, plot

def trajet(n):
    L = [ 'droite' , 'gauche' , 'haut' , 'bas' ]
    # liste où l'on mettra les positions du kangourou après chaque saut
    P = [ ]
    (x , y) = (0 , 0) # position initiale du kangourou
    xmin = 0
    xmax = 0
    ymin = 0
    ymax = 0
    for k in range(n):
        direction = choice(L)
        if direction == 'droite':
            x = x + 1
            if x > xmax:
                xmax = x
        elif direction == 'gauche':
            x = x - 1
            if x < xmin:
                xmin = x
        elif direction == 'haut':
            y = y + 1
            if y > ymax:
                ymax = y
        else:
            y = y - 1
            if y < ymin:
                ymin = y

        # on ajoute à la liste P la position du kangourou après le saut
        P.append( (x,y) )

    # on dessine le trajet
    xlim(xmin-1,xmax+1)
    ylim(ymin-1,ymax+1)
    grid()
    old_pos = (0,0)
    plot(0,0,'o')
    for coord in P:
        arrow( old_pos[0] , old_pos[1] , coord[0]-old_pos[0] , coord[1]-old_pos[1] , color='red' , head_width=0.1 , length_includes_head=True)
        old_pos = coord
    plot(old_pos[0],old_pos[1],'o')
    show()
\end{python}
Ce dernier code permet de tracer le trajet à l'aide du module \texttt{matplotlib}.

C'est un peu plus compliqué... Donc rassurez-vous, si vous êtes élèves, votre enseignant·e ne vous demandera pas d'écrire un tel programme tout·e seul·e !

Par exemple,
\begin{console}
>>> trajet(20)
\end{console}
donne:
\begin{center}
\includegraphics[scale=0.75]{trajet_kangourou.jpg}
\end{center}
