\documentclass[a4paper]{article}

\usepackage[utf8x]{inputenc}
\usepackage[T1]{fontenc}

\usepackage{listings}
\lstset{language=Python}

\usepackage[francais,bloc,completemulti]{automultiplechoice}
\begin{document}



\exemplaire{1}{

%%% debut de l'en-tête des copies :

\vspace*{.5cm}
\begin{minipage}{.4\linewidth}
\centering\large\bf Test\\ Examen du 01/01/2008\end{minipage}
\champnom{\fbox{
                \begin{minipage}{.5\linewidth}
                  Nom et prénom :

                  \vspace*{.5cm}\namefielddots
                  \vspace*{1mm}
                \end{minipage}
         }}

\begin{center}\em
Durée : 1h.
  Aucun document, calculatrice, moyen de communication n’est autorisé.
  Les questions ont une unique bonne réponse.
\end{center}
\vspace{1ex}

%%% fin de l'en-tête

\begin{question}{appendtuple}
    Qu’affichera le programme python suivant~?
    \lstinputlisting{appendtuple.py}
  \begin{reponses}
    \bonne{Une erreur car on utilise mal le tuple}
    \mauvaise{Une erreur car on demande le mauvais indice}
    \mauvaise{('John', 'Amaglio', 'Aya', 'Ano Nîmes')}
    \mauvaise{'Ano Nîmes'}
    \mauvaise{Ano Nîmes}
  \end{reponses}
\end{question}


\begin{question}{gettuple}
  Quelle est la valeur de la variable r à la fin de l'exécution du script suivant ?
    \lstinputlisting{gettuple.py}
  \begin{reponses}
    \bonne{-14}
    \mauvaise{7}
    \mauvaise{-2}
    \mauvaise{14}
    \mauvaise{-7}
  \end{reponses}
\end{question}


\begin{question}{getlist}
    On définit ainsi une liste M :
    \lstinputlisting{getlist.py}
   Quelle expression vaut la chaîne de caractères 'L' ?
  \begin{reponses}
      \bonne{M[2][3]}
      \mauvaise{M[3][4]}
      \mauvaise{M[11]}
      \mauvaise{M[12]}
  \end{reponses}
\end{question}


\begin{question}{setlist}
    On dispose d'une liste définie par L = [15,17,12,23]. Quelle est la valeur de L après l'instruction L[2] = 25 ?
  \begin{reponses}
    \mauvaise{[15,25,12,23]}
    \mauvaise{[15,17,25,12,23]}
    \bonne{[15,17,25,23]}
    \mauvaise{[15,17,12,25,23]}
  \end{reponses}
\end{question}



\begin{question}{setlistoflist}
  On considère la liste de listes suivante :
  \lstinputlisting{setlistoflist.py}
  Quelle instruction permet d’obtenir une colonne de X~?
  \begin{reponses}
      \mauvaise{tictactoe[3] = 'X'}
      \mauvaise{tictactoe[4] = 'X'}
      \bonne{tictactoe[1][1] = 'X'}
      \mauvaise{tictactoe[2][2] = 'X'}
  \end{reponses}
\end{question}


\begin{question}{comprehensionlist}
    Que vaut l'expression [ 2*c for c in range(5) ] ?
  \begin{reponses}
    \bonne{[0,2,4,6,8]}
    \mauvaise{[2,4,6,8,10]}
    \mauvaise{[1,2,4,8,16]}
    \mauvaise{[2,4,8,16,32]}
  \end{reponses}
\end{question}


\begin{question}{listcopy}
    On exécute le programme suivant :
    \lstinputlisting{listcopy.py}
Que vaut B à la fin de l'exécution ?
  \begin{reponses}
    \mauvaise{Le programme déclenche une erreur d'exécution}
    \mauvaise{[ [3,2,1], [6,5,4], [9,8,7] ]}
    \bonne{[ [1,4,7], [2,5,8], [3,6,9] ]}
    \mauvaise{[ [7,8,9], [4,5,6], [1,2,3] ]}
  \end{reponses}
\end{question}


\begin{question}{comprehensionlistoflist}
    On veut affecter à t la valeur [[0,1,2], [3,4,5], [6,7,8], [9,10,11], [12,13,14]]. Pour cela on utilise le code suivant. Par quoi doit-on remplacer les pointillés …… ?
    \lstinputlisting{comprehensionlistoflist.py}
  \begin{reponses}
    \mauvaise{i*j + j}
    \bonne{p*i + j}
    \mauvaise{p*j + i}
    \mauvaise{i*(j+1)}
  \end{reponses}
\end{question}


\begin{question}{adddict}
    Quelle opération permet d’ajouter la clé 'note' et la valeur 8 correspondante, à un dictionnaire d existant~?
    \begin{reponses}
        \bonne{d['note'] = 8}
        \mauvaise{d.append('note') = 8}
        \mauvaise{d.append('note', 8)}
        \mauvaise{On ne peut pas modifier les dictionnaires}
    \end{reponses}
\end{question}


}

\end{document}
