C0 Faire le point ! ¶
Présentation¶
Cette première séance a pour objectif de faire le point sur vos acquis du secondaire en Python. Chaque exercice proposé doit être résolu en écrivant un petit programme en Python (parfois une seule ligne suffit !). Pour écrire ces petits programmes :
- vous pouvez utiliser votre ordinateur personnel et votre environnement habituel de programmation Python
- vous pouvez utiliser le mini environnement intégré dans le navigateur et disponible à chaque exercice
Vous pouvez vérifier votre réponse en la tapant dans le formulaire associé à chaque exercice
Exercices¶
Exercice 1¶
Quel est le reste dans la division euclidienne de \(2024^{42}\) par \(1815\) ?
Indice
En Python, les opérations sur les entiers sont obtenus à l'aide des opérateurs suivants :
+
: addition-
: soustraction*
: multiplication/
: division décimale//
: quotient dans la division euclidienne%
: reste dans la division euclidienne
Vérifier votre réponse :
Exercice 2¶
On note \(a = 10001\), \(b = 7777\) et \(c = 145\), on calcule ensuite :
- \(d = a^2 - 5bc\)
- \(e = 42d - ab\) si \(d\) est divisible par 7 sinon \(e = 7c^3\)
- \(f = e + d\) si \(e\) et \(d\) ont le même signe sinon \(f = ed\)
Quelle est la valeur de \(f\) ?
# Tests
(insensible à la casse)(Ctrl+I)
(Ctrl+Clic pour inverser les colonnes)
Indice
En Python, la structure suivante :
permet d'exécuter le bloc d'instruction<instructions1>
si <condition>
est vraie et <instructions2>
sinon. Par exemple, après exécution du programme suivant :
b
vaut 1 car comme a>10
, c'est l'instruction b=1
qui est exécutée.
Vérifier votre réponse :
Exercice 3¶
On considère la suite \((u_n)_{n \in \mathbb{N}}\) définie par \(u_0 = 0.7\) et \(u_{n+1} = 3.5 u_n(1-u_n)\). Calculer \(u_{2024}\) (on donnera la valeur arrondie au centième).
# Tests
(insensible à la casse)(Ctrl+I)
(Ctrl+Clic pour inverser les colonnes)
Indice
En Python, une boucle for
permet (notamment) de répéter le bloc d'instruction indenté qui suit. La syntaxe est : for variable in range(nombre_de_répétions):
Vérifier votre réponse : (valeur arrondie au centièmre)
Exercice 4¶
En informatique, chaque caractère est associé à un entier : son code unicode, par exemple le code unicode du caractère A
est 65. En Python, pour obtenir le code unicode d'un caractère on utilise la fonction ord
, ainsi ord('A')
vaut 65. Déterminer la somme de de tous les codes unicode des caractères de la phrase "faire un peu de Python, c'est vraiment trop bien !" ?
Attention : les guillemets ne font pas partie de la phrase.
Remarques
- En tapant
ord("A")
dans le terminal ci-dessous vous pouvez vérifier qu'on obtient bien 65. - L'unicode étend le code ascii qui est parfois plus connu. En effet, lorsque le code ascii d'un caractère existe, il correspond à son code unicode. Ainsi le code ascii de
A
existe (et vaut donc aussi 65), maisù
n'est pas un caractère ascii et n'a donc pas de code ascii mais a bien un code unicode : 249.
# Tests
(insensible à la casse)(Ctrl+I)
(Ctrl+Clic pour inverser les colonnes)
Indice
En Python, une boucle for
permet (aussi) de parcourir un itérable (comme par exemple une chaine de caractère). La syntaxe est : for variable in iterable:
et permet de faire prendre à la variable chaque valeur présente dans l'itérable.
Vérifier votre réponse :
Exercice 5¶
Combien il y a-t-il de chiffres dans le nombre \(42^{2024}\) ?
# Tests
(insensible à la casse)(Ctrl+I)
(Ctrl+Clic pour inverser les colonnes)
Vérifier votre réponse :
Exercice 6¶
On rappelle que la factorielle d'un entier naturelle \(n\), notée \(n!\), est le produit des entiers strictement positifs inférieurs ou égaux à \(n\). Par exemple \(5! = 5 \times 4 \times 3 \times 2 \times 1 = 120\). Quel est le nombre de 2 dans l'écriture décimale de \(100!\) ?
# Tests
(insensible à la casse)(Ctrl+I)
(Ctrl+Clic pour inverser les colonnes)
Vérifier votre réponse :
Exercice 7¶
On considère une chaine de caractères initialement constituée de \(k\) caractères .
suivie d'un caractère #
puis de \(k\) caractères #
. Par exemple pour \(k=5\) la chaine est .....#.....
(5 .
suivi d'un #
puis de 5 .
). Cette chaine évolue de la façon suivante :
- si un
.
est entre un#
et un.
, il se transforme en#
sinon il reste un.
- si un
#
est entre deux#
ou s'il a un#
à sa gauche et un.
à sa droite, il se transforme en.
sinon il reste un#
- le premier et le dernier caractère ayant un seul voisin, ils ne sont pas affectés par ces règles d'évolutions et restent toujours des
.
Par exemple dans le cas \(k=5\) : les étapes successives d'évolution sont :
.....#.....
(état initial :)....###....
(étape 1)...##..#...
(étape 2)..##.####..
(étape 3).##..#...#.
(étape 4).#.####.##.
(étape 5)
Dans le cas \(k=256\), et à l'étape 1000, combien de #
contient la chaine ?
# Tests
(insensible à la casse)(Ctrl+I)
(Ctrl+Clic pour inverser les colonnes)
Vérifier votre réponse :
Exercice 8¶
On donne ci-dessous, une liste d'entiers altitudes
(déjà présente dans votre mini IDE), qui correspond aux altitudes d'un coureur lors d'une course de montagne. On veut déterminer le denivelé positif de ce coureur c'est-à-dire la somme des longueurs des ascensions. Par exemple, si la liste altitudes
est [330, 490, 380, 610, 780, 550]
alors :
- la course commence par une ascension de dénivelé positif \(160\) (\(490-330\))
- puis on a une descente (de \(490\) à \(380\))
- puis une ascension avec un dénivelé positif de \(230\) (\(610-380\))
- puis une nouvelle ascencion de dénivelé positif \(170\) (\(780-610\))
- puis une descente (de \(780\) à \(550\))
Le dénivelé cumulé positif total de cette course est donc \(160+230+170=560\)
Quel est le dénivelé cumulé positif total de la liste des altitudes donnée dans votre IDE ci-dessous ?
# Tests
(insensible à la casse)(Ctrl+I)
(Ctrl+Clic pour inverser les colonnes)
Indice
- Pour obtenir la valeur d'un élément dans une liste de Python, on peut utiliser la syntaxe
liste[indice]
. Par exemple sinoel = [25,12,2024]
alorsnoel[1] = 12
(l'indice du premier élément est 0). - Pour parcourir une liste, on peut utiliser un boucle
for
dont la variable représente l'indice de la valeur à laquelle on souhaite accéder. Par exemplefor i in range(3)
crée une variable qui prendra successivement les valeurs0,1
et2
(dans unrange
la dernière valeur n'est pas prise), cette variable peut être utilisé dans la boucle pour accéder ànoel[0]
puisnoel[1]
et enfinnoel[2]
- La fonction
len
s'applique aussi aux listes et renvoie leur nombre d'éléments.
Exercice 9¶
On considère la liste carres
des \(k\) premiers carrés des entiers strictement positifs, par exemple si \(k=6\), carres = [1, 4, 9, 16, 25, 36]
. Sur cette liste on effectue les opérations suivantes :
- on enlève les deux derniers éléments
- s'ils ont même parité on calcule leur somme, sinon leur différence (plus grand moins plus petit)
- on rajoute la valeur calculée à l'étape précédente (la somme ou la différence) la fin de la liste
Par exemple pour carres = [1, 4, 9, 16, 25, 36]
- les deux derniers éléments sont
25
et36
, ils sont enlevés de la liste qui devient[1, 4, 9, 16]
- ces deux entiers n'ont pas la même parité, on fait la différence
36 - 25 = 11
- on ajoute cette valeur à la fin de la liste qui devient
[1, 4, 9, 16, 11]
On renouvelle ce processus sur la liste obtenue jusqu'à ce qu'elle contienne un unique élément (dans l'exemple ci-dessous on obtient successivement[1, 4, 9, 5]
puis[1, 4, 14]
puis[1, 18]
et enfin[17]
).
Quel est l'élément restant dans le cas \(k=100\) ?
# Tests
(insensible à la casse)(Ctrl+I)
(Ctrl+Clic pour inverser les colonnes)
Indice
En python append
et pop
permettent d'effectuer les opérations suivantes sur une liste:
append
ajoute l'élément donné en argument à la fin de la liste. Par exemple siliste_de_courses = ["courgettes","poivrons","tomates","oignons"]
, l'instructionliste_de_courses.append("aubergines")
va ajouter en fin deliste_de_courses
l'élément"aubergines"
. Attention à la syntaxe qui est<liste>.append(<element>)
.pop
modifie une liste en lui enlevant son dernier élément et renvoie ce dernier élément. c'est-à-dire que le résultat d'unpop
(l'élément supprimé) peut-être utilisé (pour donner une valeur à une variable par exemple). Par exemple simatieres = ["Informatique","Anglais","Maths","Physique","SVT"]
, l'instructionsupprime = matieres.pop()
a deux effets :- le dernier élément de
matieres
est supprimé la liste devientmatieres = ["Informatique","Anglais","Maths","Physique"]
- ce dernier élément devient la valeur de
supprime
(et doncsupprime = "SVT"
)
- le dernier élément de
Exercice 10¶
Dans votre IDE ci-dessous, est déjà définie une liste de points du plan, chaque point est représenté par un tuple de python à deux éléments : son abscisse et son ordonnée. Par exemple points = [ (2,-1), (3,5)]
contient les points de coordonnées \((2,-1)\) et \((3,5)\). Quelle est la plus courte distance entre deux points de la liste de points définie dans l'éditeur ci-dessous (valeur arrondie au centième) ?
# Tests
(insensible à la casse)(Ctrl+I)
(Ctrl+Clic pour inverser les colonnes)
Véfifier votre réponse :
# Tests
(insensible à la casse)(Ctrl+I)
(Ctrl+Clic pour inverser les colonnes)