Exercices pour approfondir☘
Ces exercices doivent être utilisés pour approfondir votre maîtrise de la programmation. Ils sont parfois accompagnés d'aide et de leur solution pour vous permettre de progresser.
Avant de vous précipiter sur ces solutions dès la première difficulté, n'oubliez pas les conseils suivants :
- Avez-vous bien fait un schéma au brouillon pour visualiser le problème posé ?
- Avez-vous essayé de rédiger un algorithme en français, avec vos propres mots, avant de vous lancer dans la programmation sur machine ?
- Avez-vous utilisé des affichages intermédiaires, des
print()
, pour visualiser au fur et à mesure le contenu des variables ? - Avez-vous testé le programme avec les propositions de tests donnés dans l'exercice ?
- Avez-vous testé le programme avec de nouveaux tests, différents de ceux proposés ?
Rappels
- Chaque programme Python doit être sauvegardé sous forme de fichier texte avec l'extension
.py
.
Enregistrez ce fichier dans le dossier[F01-Bases de programmation]
avec le nom donné à l'exercice :ProgF01.61.py
,ProgF01.62.py
, etc... - Pour exécuter ce programme, il suffit de le sauvegarder puis d'appuyer sur la touche
[F5]
.
ProgF01.61☘
Copiez/collez et complétez le corps de la fonction val_abs_diff()
en respectant ses spécifications.
1 2 3 4 5 |
|
Proposition de tests
>>> val_abs_diff(3, 5)
2
>>> val_abs_diff(5.7, 2.9)
2.8
Une piste
Si vous ne vous rappelez pas ce qu'est la valeur absolue d'une expression, vous pouvez recommencer cet exercice.
Une solution
1 2 3 4 5 6 7 8 9 |
|
ProgF01.62☘
Définissez la fonction eq_2nd_degre()
qui résout l'équation du 2nd degré a x^2 + b x + c = 0, avec a \neq 0. Cette fonction renverra :
None
si l'équation n'a pas de solution ;- la valeur de l'unique solution s'il n'y en a qu'une ;
- la valeur des deux solutions s'il y en a deux.
Le module math
contient les fonctions usuelles de mathématiques. Une fois ce module importé, la fonction sqrt()
calcule la racine carrée d'un nombre de type int
ou float
. Cette fonction sqrt()
renvoie un float
.
Une piste
Ouvrir son cahier de spécialité mathématiques semble une bonne idée...
Une proposition de spécification
1 2 3 4 5 6 7 8 9 |
|
Tests de vérification
>>> eq_2nd_degre(1, 2, 1)
-1.0
>>> eq_2nd_degre(1, 2, 3)
>>> eq_2nd_degre(1, 1, -6)
(-3.0, 2.0)
Une solution
Ne pas oublier d'importer la fonction racine carrée module math
...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
ProgF01.63☘
Les années bissextiles sont les années divisibles par 4, à l'exception de celles qui sont divisibles par 100 sans l'être par 400. Par exemple :
- 2000 est une année bissextile (2000 est divisible par 4. 2000 est divisible par 100 mais aussi par 400 : il ne fait donc pas partie des exceptions).
- 2012 est divisible par 4 mais pas par 100 : 2012 est bissextile.
- 1900 est divisible par 4, par 100 mais pas par 400 : 1900 n'est pas bissextile.
Définissez la fonction bissextile()
dont le paramètre est un entier naturel non nul (l'année) puis qui renvoie True
lorsque l'année est bissextile ou False
dans le cas contraire.
Proposition de tests
>>> bissextile(2000)
True
>>> bissextile(2012)
True
>>> bissextile(1900)
False
Une piste
Un entier n
est divisible par un entier d
si le reste de la division de n
par d
est nul.
En langage Python, cela signifie que n%d
doit être égal à 0
...
Une autre piste
Il faut apprendre à tracer ce type de schéma avant de se lancer dans l'écriture d'un programme !
Une proposition de spécification
Par rapport au schéma, on renomme le paramètre afin que ce nom soit plus pertinent.
1 2 3 4 5 |
|
Une solution
1 2 3 4 5 6 7 8 9 10 11 |
|
ProgF01.64☘
Définissez la fonction ordre3()
dont les trois paramètres sont numériques et qui renvoie ces trois paramètres, du plus petit au plus grand.
Proposition de tests
>>> ordre3(3, 5, 4)
(3, 4, 5)
>>> ordre3(9, 6, 3)
(3, 6, 9)
>>> ordre3(1, 2, 3)
(1, 2, 3)
Une piste
Vous pouvez utiliser les affectations parallèles pour échanger les valeurs des variables :
a, b = b, a
Une proposition de spécification
1 2 3 4 5 |
|
Une solution
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Une variante bien trop longue
Cependant, si vous avez programmé cela, c'est une bonne base en début d'année. Essayez de bien comprendre la solution précédente pour vous améliorer.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
ProgF01.65☘
On appelle « nombres de Fibonacci » les nombres obtenus par somme des deux précédents.
Les deux premiers nombres de Fibonacci sont F_0 = 1 et F_1 = 1.
On a ensuite F_2 = 2, F_3 = 3, F_4 = 5, F_5 = 8, F_6 = 13, etc...
Complétez le corps de la fonction fibo()
en respectant ses spécifications.
1 2 3 4 5 |
|
Tests de vérification
>>> fibo(0)
1
>>> fibo(1)
1
>>> fibo(6)
13
Une solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
ProgF01.66☘
Définir la fonction som_sup()
qui prend pour paramètre un entier naturel A
et qui renvoie le plus petit entier n
tel que la somme S = 0+1+2+...+n
soit supérieure ou égale à A
.
Une proposition de spécification
1 2 3 4 5 |
|
Tests de vérification
>>> som_sup(17)
6
>>> som_sup(102587)
453
Une solution
1 2 3 4 5 6 7 8 9 10 11 |
|