\documentclass[a4paper,11pt]{article}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[francais,bloc,completemulti]{automultiplechoice}
\usepackage[french]{babel}
\usepackage{amsmath, amssymb}

\title{Modules Python}
\date{Numérique et sciences informatiques}

\begin{document}

\noindent\textbf{Modules Python} \hfill \textit{Numérique et sciences informatiques}\\[0.4em]
Nom~: \dotfill\ Prénom~: \dotfill

\bigskip

\element{premieremodules}{
  \begin{question}{q01}
    En Python, qu'est-ce qu'un \textbf{module} ?
    \begin{choices}
    \wrongchoice{Un type de données}
    \correctchoice{Un fichier \texttt{.py} contenant des fonctions, des classes ou des constantes réutilisables}
    \wrongchoice{Une boucle imbriquée}
    \wrongchoice{Une variable globale}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q02}
    Comment \textbf{importer} le module \texttt{math} en Python ?
    \begin{choices}
    \wrongchoice{\texttt{require math}}
    \wrongchoice{\texttt{use math}}
    \wrongchoice{\texttt{include math}}
    \correctchoice{\texttt{import math}}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q03}
    Après \texttt{import math}, comment appelle-t-on la
fonction \texttt{sqrt} (racine carrée) ?
    \begin{choices}
    \wrongchoice{\texttt{math->sqrt(2)}}
    \correctchoice{\texttt{math.sqrt(2)}}
    \wrongchoice{\texttt{sqrt(2)}}
    \wrongchoice{\texttt{math::sqrt(2)}}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q04}
    Que fait \texttt{from math import sqrt} ?
    \begin{choices}
    \wrongchoice{Importe tout le module \texttt{math}}
    \correctchoice{Importe seulement la fonction \texttt{sqrt}, qui devient appelable directement comme \texttt{sqrt(2)}}
    \wrongchoice{Cela ne fonctionne pas}
    \wrongchoice{Renomme \texttt{math} en \texttt{sqrt}}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q05}
    Comment obtenir la valeur de π en Python ?
    \begin{choices}
    \wrongchoice{\texttt{PI}}
    \correctchoice{\texttt{math.pi} (après \texttt{import math})}
    \wrongchoice{\texttt{3.14}}
    \wrongchoice{\texttt{pi}}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q06}
    Quel module de la bibliothèque standard permet
de générer des nombres aléatoires ?
    \begin{choices}
    \wrongchoice{\texttt{numpy}}
    \wrongchoice{\texttt{math}}
    \correctchoice{\texttt{random}}
    \wrongchoice{\texttt{stochastic}}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q07}
    Que fait \texttt{random.randint(1, 6)} ?
    \begin{choices}
    \wrongchoice{Renvoie 6 (le maximum)}
    \wrongchoice{Renvoie une liste de 6 éléments}
    \wrongchoice{Renvoie un nombre flottant entre 1 et 6}
    \correctchoice{Renvoie un entier aléatoire entre 1 et 6, inclus}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q08}
    Que fait \texttt{import numpy as np} ?
    \begin{choices}
    \wrongchoice{Importe deux modules \texttt{numpy} et \texttt{np}}
    \correctchoice{Importe \texttt{numpy} mais le renomme en \texttt{np}}
    \wrongchoice{Erreur de syntaxe}
    \wrongchoice{Importe seulement \texttt{np} (pas \texttt{numpy} au complet)}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q09}
    Que signifie « bibliothèque standard de Python » ?
    \begin{choices}
    \wrongchoice{Une norme ISO obligatoire}
    \wrongchoice{La documentation officielle}
    \correctchoice{Les modules livrés avec Python, disponibles sans installation supplémentaire}
    \wrongchoice{La bibliothèque physique d'Anthropic}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q10}
    \begin{lstlisting}
import math
print(math.sqrt(16))
\end{lstlisting}
Que produit ce code ?
    \begin{choices}
    \wrongchoice{Affiche \texttt{16.0}}
    \correctchoice{Affiche \texttt{4.0}}
    \wrongchoice{Lève une erreur}
    \wrongchoice{Affiche \texttt{4}}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q11}
    Pourquoi est-il \textbf{déconseillé} d'utiliser
\texttt{from math import *} ?
    \begin{choices}
    \wrongchoice{Parce que c'est trop lent}
    \correctchoice{Parce que cela importe tous les noms dans le scope global, ce qui peut masquer des variables/fonctions existantes (collisions)}
    \wrongchoice{Parce que c'est interdit par Python}
    \wrongchoice{Parce que cela ne fonctionne pas}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q12}
    Comment créer son propre module
\texttt{mes\_outils.py} et l'importer ?
    \begin{choices}
    \wrongchoice{Il faut un mot-clé \texttt{module} dans le fichier}
    \wrongchoice{Il faut compiler le module avant de l'importer}
    \correctchoice{Créer un fichier \texttt{mes\_outils.py} contenant des fonctions, puis dans un autre fichier du même répertoire : \texttt{import mes\_outils}}
    \wrongchoice{Il faut publier le module sur PyPI}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q13}
    Si l'on écrit \texttt{import math} deux fois dans le
même programme, que se passe-t-il ?
    \begin{choices}
    \wrongchoice{Cela lève une erreur}
    \wrongchoice{Le module est dupliqué en mémoire}
    \correctchoice{Le module n'est chargé qu'une seule fois ; la deuxième instruction ne fait rien}
    \wrongchoice{Le module est rechargé à chaque fois (lent)}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q14}
    Quelle fonction du module \texttt{random} permet de
choisir un élément au hasard dans une liste ?
    \begin{choices}
    \wrongchoice{\texttt{random.select(liste)}}
    \wrongchoice{\texttt{random.random(liste)}}
    \correctchoice{\texttt{random.choice(liste)}}
    \wrongchoice{\texttt{random.pick(liste)}}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q15}
    Que signifie l'idiome \texttt{if \_\_name\_\_ == "\_\_main\_\_":} ?
    \begin{choices}
    \wrongchoice{Que le programme est sans bug}
    \correctchoice{Que le bloc s'exécute uniquement quand le fichier est lancé directement, pas quand il est importé comme module}
    \wrongchoice{Que le programme est en mode débogage}
    \wrongchoice{Que la fonction \texttt{main} doit être définie}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q16}
    Comment obtenir l'aide d'une fonction d'un
module en mode interactif ?
    \begin{choices}
    \correctchoice{\texttt{help(math.sqrt)}}
    \wrongchoice{\texttt{man math.sqrt}}
    \wrongchoice{\texttt{info(math.sqrt)}}
    \wrongchoice{\texttt{google math.sqrt}}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q17}
    Quel code utilise \texttt{pi} correctement après
\texttt{from math import pi} ?
    \begin{choices}
    \wrongchoice{\texttt{math.pi}}
    \correctchoice{\texttt{pi}}
    \wrongchoice{\texttt{import.pi}}
    \wrongchoice{\texttt{from.pi}}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q18}
    \begin{lstlisting}
from math import sqrt

def sqrt(x):
    return x ** 0.5

print(sqrt(16))
\end{lstlisting}
Quelle fonction est appelée ?
    \begin{choices}
    \wrongchoice{La fonction de \texttt{math} (4.0)}
    \wrongchoice{Les deux fonctions sont appelées}
    \correctchoice{La fonction \texttt{sqrt} définie localement, qui retourne aussi \texttt{4.0} puisqu'elle calcule également la racine carrée}
    \wrongchoice{Erreur : conflit de noms}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q19}
    Pourquoi utilise-t-on \texttt{random.seed(42)} ?
    \begin{choices}
    \wrongchoice{Pour rendre les tirages plus aléatoires}
    \wrongchoice{Pour accélérer le générateur}
    \correctchoice{Pour rendre les tirages reproductibles : avec la même graine, on obtient toujours la même séquence}
    \wrongchoice{Pour générer le nombre 42}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q20}
    Lequel de ces modules de la bibliothèque
standard est utilisé pour manipuler des
\textbf{fichiers JSON} ?
    \begin{choices}
    \correctchoice{\texttt{json}}
    \wrongchoice{\texttt{csv}}
    \wrongchoice{\texttt{math}}
    \wrongchoice{\texttt{os}}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q21}
    Comment installe-t-on un module externe (par
exemple \texttt{numpy}) qui n'est pas dans la
bibliothèque standard ?
    \begin{choices}
    \correctchoice{Avec la commande \texttt{pip install numpy} (dans le terminal)}
    \wrongchoice{Avec \texttt{download numpy} dans Python}
    \wrongchoice{Avec \texttt{import numpy}}
    \wrongchoice{Il faut le télécharger manuellement et le copier}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q22}
    Quelle est la différence entre un \textbf{module} et
un \textbf{package} en Python ?
    \begin{choices}
    \wrongchoice{Un module est plus rapide}
    \wrongchoice{Un package est un module compilé}
    \wrongchoice{Aucune}
    \correctchoice{Un module est un fichier \texttt{.py} ; un package est un répertoire contenant plusieurs modules (et un fichier \texttt{\_\_init\_\_.py})}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q23}
    Pourquoi le code suivant peut-il être
problématique ?
\begin{lstlisting}
from random import *
from math import *
\end{lstlisting}
    \begin{choices}
    \correctchoice{Parce que les deux modules peuvent avoir des fonctions de même nom (par exemple \texttt{pow}), et le second import écrase silencieusement le premier}
    \wrongchoice{Parce que c'est trop lent}
    \wrongchoice{Parce que l'on ne peut pas importer plusieurs modules}
    \wrongchoice{Parce que \texttt{math} doit être importé avant \texttt{random}}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q24}
    Dans un fichier Python bien organisé, où
placer les \texttt{import} ?
    \begin{choices}
    \wrongchoice{Dans une fonction \texttt{main}}
    \wrongchoice{À la fin du fichier}
    \wrongchoice{N'importe où dans le fichier}
    \correctchoice{En haut du fichier, regroupés (standards / externes / locaux)}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q25}
    Parmi les affirmations suivantes, laquelle est
\textbf{fausse} ?
    \begin{choices}
    \wrongchoice{\texttt{from math import pi} importe la constante \texttt{pi} sans préfixe}
    \wrongchoice{La bibliothèque standard de Python contient des modules pour les fichiers, le réseau, les dates, le hasard, etc.}
    \correctchoice{Tout module importé est systématiquement rechargé à chaque exécution du programme}
    \wrongchoice{\texttt{import math} rend les fonctions accessibles via le préfixe \texttt{math.}}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q26}
    Quelle est la différence entre \texttt{random.random()} et
\texttt{random.randint(a, b)} ?
    \begin{choices}
    \wrongchoice{Les deux renvoient un entier compris entre 0 et 1}
    \correctchoice{\texttt{random.random()} renvoie un flottant tiré uniformément dans $[0\,;\, 1[$ ; \texttt{random.randint(a, b)} renvoie un entier tiré uniformément dans $[a\,;\, b]$ (bornes incluses)}
    \wrongchoice{La fonction \texttt{random.randint(a, b)} exclut la borne \texttt{b}}
    \wrongchoice{\texttt{random.random()} renvoie l'heure courante ; \texttt{random.randint} lit la mémoire}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q27}
    Parmi les expressions suivantes, laquelle ne renvoie
\textbf{pas} $5$ après l'instruction \texttt{import math} ?
    \begin{choices}
    \wrongchoice{\texttt{math.ceil(4.3)}}
    \correctchoice{\texttt{math.log(100)}}
    \wrongchoice{\texttt{math.sqrt(25)}}
    \wrongchoice{\texttt{math.floor(5.7)}}
    \end{choices}
  \end{question}
}

\element{premieremodules}{
  \begin{question}{q28}
    On souhaite mesurer la durée d'exécution d'une
portion de code. Quelle structure utilise le module
\texttt{time} de manière correcte ?
    \begin{choices}
    \wrongchoice{\begin{lstlisting}
import time
duree = time.mesure(code)
\end{lstlisting}
}
    \wrongchoice{\begin{lstlisting}
import time
duree = time.now()
\end{lstlisting}
}
    \wrongchoice{\begin{lstlisting}
import time
duree = time.sleep(10)
\end{lstlisting}
}
    \correctchoice{\begin{lstlisting}
import time
debut = time.time()
# ... code à mesurer ...
duree = time.time() - debut
\end{lstlisting}
}
    \end{choices}
  \end{question}
}


\onecopy{1}{
  \shufflegroup{premieremodules}
  \insertgroup{premieremodules}
}

\end{document}
