Oraux Blancs Python
Classe de PT
Lycée La Prat’s
Planche 1 (2015, ENSAM python — élève 1)
1) Coder une fonction qui détermine si un nombre est premier.
2) Écrire une fonction listePremiers(n) qui retourne la liste des nombres premiers inférieurs à un entier
n. Quelle est sa complexité ?
3) Écrire une fonction listePremiersBis(n) qui retourne une liste identique à la précédente, mais en
« rayant » les nombres qui ne sont pas premier, en commençant par les multiples de 2, de 3, etc. Quelle
est sa complexité ?
4) Illustrer les complexités à l’aide d’un compteur.
Planche 2 (2015, ENSAM Python — élève 2)
Soit A(22,10),B(12,3) et C(3,3). On pourra utiliser la fonction randint de la bibliothèque numpy.random.
1) Tracer le triangle ABC à l’aide de la fonction plot.
2) On définit la suite (Tn)de points par : T0=A,Bou Cde façon équiprobable, et si Tnest construit,
Tn+1 est le milieu entre Tnet l’un des trois points A,Bou Cde façon équiprobable.
Écrire une fonction d’argument un point Tet qui renvoie le milieu Sentre Tet l’un des trois points
A,Bou C.
3) Créer un tableau numpy Mde taille 11 ×2contenant les 11 premiers points de (T n). Afficher Men
nuage de points.
4) Faire de même avec 10 000 points.
5) Afficher plusieurs tirages de couleurs différentes.
Planche 3 (2015, ENSAM Python — conj.)
Nombres parfaits.
1) Écrire une fonction qui donne l’ensemble des diviseurs stricts (autres que lui-même) d’un nombre n.
2) On appelle nombre parfait un entier naturel qui est la somme de ses diviseurs stricts. Déterminer les
nombres parfaits inférieurs à 10000.
3) Déterminer les nombres parfaits trouvés à la question précédente qui s’écrivent comme somme de
nombres impairs consécutifs élevés au cube.
4) Déterminer la somme des inverses des diviseurs d’un nombre parfait.
Planche 4 (2015, ENSAM Python — Mimard)
Soit E={a1, . . . , an}un ensemble. Si Aireprésente une partie de E, elle est représentée par le code citel
que ci[k]=0si akAi, et 1sinon.
1) Écrire une fonction reunion d’arguments c1et c2qui retourne le code de A1A2.
2) Écrire une fonction estRec d’argument Lune liste de codes associés à des sous-ensembles de Eet
retournant True si la réunion de ces sous-ensemble vaut Eet False sinon.
3) Soit Run ensemble de parties de Ereprésenté par une liste Lde codes. On dit que Rest un recou-
vrement minimal de Esi la réunion des parties de Rvaut Eet que pour tout R0inclus dans Ret
différent de R,R0n’est pas un recouvrement de E(la réunion des parties de Rest différente de E).
Écrire la fonction estRecMin d’argument Lune liste de codes représentant R, qui retourne True si R
est un recouvrement minimal de Eet False sinon.
1
Lycée La Prat’s Oraux Blancs Python
Planche 5 (2015, ENSAM Python — Mimard)
On dit qu’un mot est un palindrome si il est le même lorsqu’on le lit à l’envers. Par exemple le mot "radar"
est un palindrome. Le mot "nul" donne "lun" à l’envers et n’est pas un palindrome.
1) Écrire une fonction inverse d’argument une chaîne de caractères mot et renvoyant la chaîne écrite à
l’envers.
2) Écrire une fonction palindrome d’argument une chaine de caractères mot et qui renvoie le booléen
True si le mot est est un palindrome et False sinon.
3) Par extension on dit qu’un nombre est un palindrome si il est égal au nombre obtenu en écrivant les
chiffres en ordre inverse.
Écrire une fonction palNombre, d’argument Net renvoyant la liste des nombres palindromes inférieur
ou égaux à N.
Exercice 1 (Décomposition en base 2)
1) Écrire une fonction récursive dec2bin de paramètre nentier qui renvoie la chaîne de caractère constitué
des chiffres de nen base 2.
2) Écrire une fonction récursive bin2dec de paramètre schaîne de caractère qui renvoie l’entier représen
en base 2par s.
3) Écrire deux fonctions analogues aux précédente mais prenant en paramètre la base b.
Exercice 2 (Tri fusion)
1) Écrire une fonction qui fusionne deux listes déjà triées.
2) Écrire un algorithme de tri fusion, qui fait appel à la fonction précédente. On peut écrire un algorithme
récursif ou non récursif, au choix.
3) Faire afficher le contenu des variables à chaque étape.
4) Étudier la complexité en temps et en mémoire lorsque la longueur de la liste est une puissance de 2.
Exercice 3 (Autour du démineur)
On pourra utiliser la fonction rand de la sous-bibliothèque numpy.random. Chaque fonction doit être testée.
Dans tout ce TP, on appellera « grille » un tableau en Python (liste de listes ayant toutes la même longueur
ou tableau NumPy) constitué uniquement de 0 et de 1.
1) Écrire une commande Python permettant de créer rapidement une grille à nlignes et pcolonnes ne
contenant que des zéros.
2) Écrire une fonction Python qui prend comme argument une grille get qui ressort la proportion de 0
dans la grille.
3) Écrire une fonction Python qui prend comme arguments trois entiers n,pet ket qui créée une grille
ànlignes et pcolonnes avant d’y insérer knombres 1à des emplacements aléatoires, le reste étant
constitué de zéros.
4) Écrire une fonction Python prenant comme argument une grille et deux entiers iet j, et qui compte le
nombre de voisins de la case (i, j)(située sur la ligne iet la colonne j) contenant des 1(les voisins sont
toutes les cases adjacentes à la case (i, j), y compris en diagonale, ce qui fait un maximum possible de
huit voisins pour une case qui n’est pas sur un côté de la grille).
On pourra distinguer des cas pour les coins et les cases en bord de grille.
5) En déduire une fonction Python qui transforme une grille en un tableau de même taille contenant le
caractère M partout où la grille avait des 1, et le nombre de voisins contenant des mines (des 1dans
la grille initiale) sur les cases qui contenaient des 0.
6) Programmer un démineur.
Exercice 4 (Simulation de variables aléatoires)
On pourra utiliser la fonction rand de la sous-bibliothèque numpy.random. Chaque fonction doit être testée.
1) Écrire une fonction Xb d’argument p]0,1[ retournant 1avec probabilité pet 0avec probabilité 1p.
2
Oraux Blancs Python Lycée La Prat’s
2) Écrire une fonction echantillon d’argument Net peffectuant Ntirages de la variable aléatoire
précédente et retournant la proportion de xobtenus pour tout xX(Ω). Que constate-t-on lorsque
Ngrandit ?
3) Avec p= 1/2et des suites de n= 20 tirages, quel est statistiquement (avec N= 1000 essais) la
probabilité d’avoir une suite de 1de longueur 6?
4) Écrire une fonction premiere_apparition d’argument pqui retourne le temps de première apparition
d’un 1lors de tirage successifs de la variable aléatoire précédente.
5) Écrire une fonction lgt_premiere_chaine d’argument pqui retourne la longueur de la première
chaîne.
6) Tester statistiquement l’affirmation suivante : « Lors d’une suite de lancers indépendants avec une
pièce non équilibrée (probabilité p]0,1[ d’avoir pile), la longueur Xde la première chaîne, n’est pas
indépendante de la longueur Yde la deuxième chaîne. »
Exercice 5 (Attracteur étrange)
Dans le modèle météorologique de Lorenz (à l’origine de la découverte du fameux effet papillon), trois
fonctions temporelles vérifient le système d’équations différentielles suivant :
x0= 10(yx)
y0= 28xyxz
z0=xy 8
3z
x,yet zdépendent du temps t. On prendra comme conditions initiales x(0) = y(0) = z(0) = 1.
On importera la sous-bibliothèque matplotlib.pyplot sous l’abréviation plt.
1) Écrire une fonction Ftel que le système précédent s’écrive dY
dt=F(Y, t).
2) À l’aide de la fonction odeint de la bibliothèque scipy.integrate, effectuer une résolution approchée
du système précédent. On prendra comme intervalle de temps pour la résolution l’intervalle [0,50], et
n= 1000.
3) Représenter graphiquement sur une même figure les trois courbes de x,yet z.
4) Recommencer en modifiant légèrement la valeur initiale de z(en prenant par exemple z(0) = 1.001).
Commenter les résultats obtenus.
5) On souhaite maintenant représenter dans l’espace les variables x,yet z. Pour cela, effectuer l’impor-
tation suivante :
from mpl_toolkits.mplot3d import Axes3D
Pour tracer votre courbe dans l’espace, vous taperez ensuite les deux lignes de code suivantes :
plt.gca(projection=’3d’)
plt.plot(x,y,z)
6) Tracez une courbe 3D pour le problème posé, et modifiez les conditions initiales pour voir si cela
change l’allure de la courbe. Commentez les résultats obtenus.
7) Écrire un programme appliquant la méthode d’Euler à ce système d’équations, comparer avec les
solutions données par odeint.
Exercice 6 (images)
On utilisera les bibliothèques numpy et matplotlib.pyplot (fonctions imshow et imread ).
Le but est de transformer une image couleur en une image en niveaux de gris, et de modifier le contraste.
1) Ouvrir l’image image.png du répertoire courant. L’afficher. Décrire le type de l’objet contenant l’image.
2) Afficher l’image contenant uniquement le (on pourra utiliser l’option cmap = ’gray’).
3) Écrire une fonction passant « naïvement » l’image en niveau de gris.
4) L’être humain ne perçoit pas les couleurs avec la même intensité. Le vert semble plus lumineux que le
rouge qui est lui même plus lumineux que le bleu. Proposer une amélioration de la fonction précédente.
(rouge : 0.21 ; vert : 0.72 ; bleu : 0.07).
Lycée La Prat’s Oraux Blancs Python
5) Écrire une fonction histogramme(im) qui renvoie un triplet de listes (h_r, h_g, h_b) de longueur
256 telle que h_r[i] soit égal au nombre de pixels de l’image dont la valeur « rouge » vaut i(de même
pour h_g et le vert...).
6) Écrire une fonction affiche_histo(h) qui prenne un triplet tel que celui produit par la fonction
précédente et affiche la quantité de pixel en fonction de l’intensité.
4
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !