01b Exos Rentrée
Essayons de faire cette fiche en se connectant à Capytale. La fiche d'exercices est à faire sur Capytale.
Fiche d'exercices Python 01b sur Capytale
ou en vous connectant directement sur ENT >
caPYTale et en saisissant le numéro d'activité :
aac4-6965625
Si ce n'est pas possible aujourd'hui (problème d'identifiants), faire les exercices sur pyzo. Les énoncés sont ci-dessous.
Exercice 1⚓︎
On donne le code python :
age = 12
if age >= 18:
print('adulte')
else:
print('enfant')
- Ouvrir pyzo (éditeur python), et créer un nouveau fichier en copiant-collant le code ci-dessus.
- Faire exécuter, et vérifier qu'il s'affiche "enfant".
- Modifier le code pour gérer le cas des adolescents (entre 10 et 18 ans...).
- Utilisez la fonction
input()pour demander son âge à l’utilisateur.
Exercice 2⚓︎
Créer un nouveau fichier sur pyzo. Le sauvegarder dans vos documents sous un nom du type "Fiche01b-Exo2.py".
Écrire un programme qui demande en entrée (avec input()) à l’utilisateur un nombre (qui peut être décimal) et renvoie en sortie un affichage pour dire si ce nombre est positif, négatif ou nul. Aide : elif.
Exercice 3⚓︎
Écrire un programme qui demande en entrée à l’utilisateur un nombre (qui peut être décimal) et renvoie en sortie un affichage pour dire si ce nombre appartient à l’intervalle [2; 8].
Réaliser trois scripts en utilisant trois méthodes différentes :
- vous ne pouvez pas utiliser plusieurs tests dans le même if, mais vous pouvez utiliser plusieurs if imbriqués les uns dans les autres ;
- vous pouvez utiliser le mot-clé and dans la condition ;
- vous pouvez utiliser le mot-clé or dans la condition.
Exercice 4⚓︎
Écrire un programme qui affiche 20 fois le texte "il fait beau ce matin".
Exercice 5⚓︎
Écrire un programme qui demande à l’utilisateur de saisir un nombre entier et qui renvoie en sortie un affichage indiquant s’il est divisible ou pas par 7.
Exercice 6⚓︎
En utilisant la fonction random(), écrire un programme qui affiche aléatoirement pile ou face de façon équiprobable. On pensera à importer le paquet random et à demander l’aide help("random"), les différentes fonctions étant classées par ordre alphabétique.
Exercice 7 (en plus)⚓︎
Écrire un programme qui, étant donnée une équation du second degré, détermine, si elles existent, le nombre de ses racines réelles et qui les calcule.
L’entrée de ce programme sera l’équation de la forme \(ax^2 + bx + c\) donnée sous la forme de ses coefficients \(a\), \(b\) et \(c\) de type float.
La sortie sera l’affichage du nombre de solutions et, quand elles existent, de leurs valeurs.
Une variable delta sera utilisée pour stocker la valeur du discriminant et sa valeur sera affichée.
Aide mathématique
On va apprendre (ou on a appris) en cours de mathématiques, que, pour résoudre une équation du second degré du type : \(ax^2 + bx + c = 0\), on peut applique rla méthode suivante :
- calculer \(\Delta = b^2 - 4ac\)
- si \(\Delta\) est strictement positif, il y a deux solutions, dont les valeurs sont :
\(x_1 = \frac{-b - \sqrt{\Delta}}{2a}\) et \(x_2 = \frac{-b + \sqrt{\Delta}}{2a}\)
- si \(\Delta\) est nul, il y a une solution, dont la valeur est :
\(x_0 = \frac{-b}{2a}\)
- si \(\Delta\) est strictement négatif, il n'y a pas de solutions.
Pour terminer, proposer un jeu de tests satisfaisant pour valider le bon fonctionnement du programme.
Qu'est-ce-que c'est ?
Un jeu de tests est un ensemble de situations (de valeurs) que l'on testera pour se convaincre que le programme fonctionne.
Le jeu de tests doit couvrir au moins tous les cas possibles des différents branchements et instructions conditionnelles.
Il faut aussi prévoir les valeurs "limites" qui pourraient poser des difficultés (les valeurs très grandes, ou très petites, les erreurs d'arrondis possibles, etc).
Exercice 8 (en plus !!)⚓︎
Le but de cet exercice est d’écrire un programme qui demande à l’utilisateur une date comprise entre le \(1^{er}\) janvier 1901 et le 31 décembre 2099 et qui indique le nombre de jours qui se sont écoulés entre le \(1^{er}\) janvier 1901 et cette date choisie.
Une bonne approximation de ce nombre est \((a - 1901) \times 365 + (m - 1) \times 30 + j - 1.\)
Mais il faut lui ajouter deux termes correctifs.
- Le premier est dû au fait que tous les mois n’ont pas 30 jours.
Aide pour le calcul
On peut montrer que ce terme correctif vaut m // 2 si \(m \in \{1 ; 2\}\) et (m + m // 8) // 2 - 2 si \(m \in \{3 ; ... ; 12\}\).
- Le second est dû aux années bissextiles.
Aide pour le calcul
On peut montrer que ce terme correctif vaut (a - 1900) // 4 - 1 si \(a\) est multiple de \(4\) et \(m \in \{1 ; 2\}\) et (a - 1900) // 4 sinon.
Écrire un programme qui demande à l’utilisateur trois nombres formant une date (resp. jour / mois / année) comprise entre le \(1^{er}\) janvier 1901 et le 31 décembre 2099 et qui indique le nombre de jours écoulés depuis le \(1^{er}\) janvier 1901 en tenant compte les informations données ci-dessus.
Variante : Écrire un programme qui demande à l’utilisateur deux dates et indique le nombre de jours écoulés entre ces deux dates.
Attention
Les années bissextiles ne sont pas tout à fait tous les \(4\) ans.
La règle actuelle précise que les années sont bissextiles si elles sont divibles par \(4\) mais pas par \(100\), ou qu'elles sont divisibles par \(400\).
Autrement dit, les années multiples de \(4\) sont bissextiles.
Mais les siècles (\(1800\), \(1900\), ...) ne sont pas bissextiles, sauf les siècles multiples de \(400\) (\(2000\), \(2400\), ...)