Prérequis en Python
Le niveau de Python supposé et mobilisé pour cet enseignement est celui attendu à l’issue de l’enseignement SMI3U13 - Algorithmique et programmation 1 de L2 (voir la page du parcours).
En particulier, vous devriez vérifier que chacun des points suivants est maîtrisé. Chaque tâche ne devrait vous prendre que quelques minutes (ou même dizaines de secondes); et les programmes demandés ne représentent que quelques lignes de Python chacun (généralement moins de 4).
Il s’agit de vous auto-évaluer. Si vous vous sentez en confiance et qu’une question vous parait trop simple, ignorez-la. Si par contre, malgré vos efforts, vous avez un doute ou une difficulté dites-le sur le forum !
Tout ce qui figure dans cette fiche et qui n’a pas été signalé sera supposé connu.
Vous pouvez vous aider d’un outil comme Python Tutor pour visualiser l’exécution d’un programme pas à pas.
Calculs, affectations, tests, boucles et types numériques
Vous devriez savoir prédire et expliquer le type et la valeur de x
à l’issue
de chacun des extraits de code suivants.
= 2*3
= 2**3
= 2**.5
= 7/3 # ici, on ne vous demande pas de deviner le dernier chiffre
= 7//3
= 7%3
= 1
= 2
=
=
= 0
+= 1
= 0
+=
= 100
= -7
= 1
= 0
= 1
= == 1
= 1 == 1.0
Vous devriez aussi savoir expliquer pourquoi
-10**100 == 1
mais
-10.0**100 == 0.0
et (au moins vaguement) pourquoi:
*
ne donne pas 2.0
.
Fonctions et portée
-
Écrivez une fonction
delta(a,b,c)
qui renvoie le discriminant du polynôme $ ax^2+bx+c $ (en supposant quea
,b
,c
sont des nombres flottants). -
Vous devriez deviner la valeur de
x
après:return 2* =
et aussi prévoir ce qui est affiché en cours de route.
-
Vous devriez comprendre pourquoi, après le programme suivant,
x
vaut0
:= 0 = +1
-
Vous devriez savoir expliquer les comportements (différents) des deux programmes suivants :
return
et
-
Si on vous demande d’écrire une fonction
truc(n)
qui renvoie le plus petit entier naturelr
tel que 7r
³-2r
+1$ > $n
, pourquoi est-ce que le programme suivant n’est pas bon ?= 0 += 1
-
Après
return return
que vaut
f(2,3)
? -
Si j’écris:
'''Renvoie la valeur absolue de `x` (si c’est un nombre entier ou flottant).''' = - return
à quoi sert la première ligne du corps de la définition ?
Séquences : tableaux, n-uplets, chaînes
Vous devriez savoir prédire et expliquer le type et la valeur de x
à l’issue de chacun des extraits de code suivants.
=
=
=
=
=
= ==
=
= ==
=
=
=
=
=
=
=
=
=
= +
=
=
= 1,2
, = ,
,
= 1,2
=
,
=
= +
=
=
=
Dictionnaires
Que fait la fonction suivante ?
=
= + 1
= 1
return
Utilisation des modules
-
Comment calculer (une valeur approchée de) $ \mathrm{sin}(42°) $ en utilisant la bibliothèque standard de Python ?
-
Écrivez une fonction
de6()
qui renvoie un nombre au hasard entre1
et6
à chaque fois qu’on l’appelle (pas comme ça).
Exceptions
Expliquez ce qui se passe lorsqu’on lance:
=
= 0
= 0
= +
Que calcule (intuitivement) la fonction suivante ?
return
return 0.0
Programmation objet
Chacune des principales constructions mathématiques qu’on étudiera sera traduite en définissant une classe Python. Celle-ci sera munie de méthodes réalisant les opérations qui définissent la structure étudiée.
Il faut donc à minima savoir comment on définit et utilise une classe en Python.
Ping pong
Définissez une classe PingPong()
munie de deux méthodes ping()
et pong()
,
et telle que, après p = PingPong()
:
p.ping()
(resp.p.pong()
) afficheping
(resp.pong
) si c’est la première fois qu’on appelle une de ces deux méthodes, ou bien si on a appelé l’autre juste avant ;- chaque méthode affiche
raté
, si on l’a déjà appelée avant, sans appeler l’autre depuis.
Par l’exemple :
=
doit afficher
ping
pong
ping
pong
et
=
doit afficher
pong
raté
raté
ping
Un peu de tout
-
Que vaut
l
après le code suivant?= False = not return = =
-
Ajoutez à la classe ci-dessus une méthode
lance()
, qui change la valeur de l’attributx
, en la tirant au hasard parmi les deux valeursTrue
etFalse
, et renvoie cette valeur. -
Modifiez la classe (possiblement en lui ajoutant les attributs et méthodes que vous voudrez), pour qu’on dispose d’une nouvelle méthode
frequence()
qui renvoie la proportion des appels àlance()
qui ont renvoyéTrue
(et renvoie une exception quand cette fréquence n’est pas définie).