Tous les articles par Nicolas Maurin

Révisions de Première (2 séances)

Description

Un administrateur de réseau pédagogique a créé des comptes utilisateurs à partir de données issues des bases du rectorat.

Le format du fichier qu’il a ainsi récupéré est au format csv. Les utilisateurs sont classés par ordre alphabétique.

L’administrateur, par soucis de simplification, souhaite disposer d’un fichier csv par classe, avec les utilisateurs de cette classe par ordre alphabétique.

On vous demande de créer un programme python qui permettra ce traitement. Dans les fichiers de classe, on retrouvera les mêmes champs que dans le fichier original. Chaque fichier créé contiendra les noms des utilisateurs triés par ordre alphabétique.

Exemple à partir du fichier « utilisateurs_simple.csv » :

Le programme devra créer 3 fichiers : « 1RICIMTB.csv » – « 1TMA .csv » – « 1UFA.csv » contenant chacun les utilisateurs de la classe correspondante, classés dans l’ordre alphabétique.

1RICIMTB.csv
1CAPT.csv
1UFA

Fichier de tous les utilisateurs :

Fichier simplifié des utilisateurs (pour mise au point) :

Pour aller plus loin…

Le fichier original est sous la forme suivante (image ci-dessous). Les champs sont différemment organisés et les noms d’utilisateurs ne sont pas classés dans l’ordre alphabétique. Il s’agira donc de les classer par ordre alphabétique dans les fichiers de classe…z

Ressource :

« Utilisation du module csv dans Python » (issu du site https://pythonforge.com/module-csv-lire-ecrire/)

Codage – Exercices

Exercice 1

Ecrire une fonction decimal_vers_binaire() qui prend comme argument un nombre entier décimal saisi par l’utilisateur et qui renvoi le nombre binaire correspondant sur 1 octet (8bits).

La fonction devra coder le nombre décimal en binaire et rajoutera le nombre de 0 voulu pour faire un octet.

Exemples :

Exercice 2

Modifier la fonction précédente pour coder le nombre entier sur 16 bits.

Exemples :

Exercice 3

Ecrire une fonction plus_un() qui ajoute 1 à un nombre binaire de 8 bits saisi par l’utilisateur passé en argument.

Exemples :

Pour vous aiguiller :
1- Recopier l’octet saisi par l’utilisateur dans une liste.
2- Comparer chaque bit, rang par rang. Si le bit de rang 0 est égal à 1, le changer à 0 et marquer la retenue à Vraie. Si le bit de rang 0 est égal à 0, le changer à 1 et garder les autres intacts.
3- Si la retenue est Vraie tester les bit de rang suivant, les uns après les autres tant que la retenue est Vraie.
4- Recopie du résultat dans un string que l’on affichera en appelant la fonction plus_un()

Exercice 4

Ecrire un programme qui permet de convertir les nombres entiers en binaire signé en complément à 2 (en 8 bits) .
1- Adapter la fonction decimal_vers_binaire () de l’exercice 1 afin de convertir le nombre binaire en décimal (sur 7 bits).
2- Créer une fonction inversion() qui prend en argument le nombre binaire convertit précédemment et renvoi le résultat d’une inversion bit à bit.
3- Utiliser la fonction plus_un() de l’exercice 3 avec comme argument le nombre binaire renvoyé par la fonction inversion() et renvoi le résultat de l’addition de ce dernier avec 1.
Enfin, imprimer à l’écran le résultat et vérifier la justesse de ce dernier.

Exemples :

Exercice 5

NoteBook de correction

Exercice 7 – Bases de Python

La banque

Aline envisage d’ouvrir un compte à la banque Argento, mais elle veut d’abord savoir si cela sera rentable. Sur un tel compte, les intérêts sont de 5% par an, et la banque prélève un coût fixe annuel de 11 euros. Le capital de l’année n + 1 est donc obtenu par la formule un+1 = un × 1.05 − 11, où un désigne le capital à l’année n.

  1. Écrire une fonction capital(nb_annees, capital_debut) qui renvoie le capital en euros qu’Aline aurait sur un tel compte au bout de nb_annees en plaçant initialement un capital égal à capital_debut (en euros).
  2. Écrire une fonction gagne_argent(nb_annees, capital_debut) qui renvoie True si le capital au bout de nb_annees sur un tel compte est supérieur ou égal au capital de début.

Exercice tiré de caséine université de Grenoble – proposé par Aurélie Lagoutte

Exercice 6 – Bases de Python

Moustiques

Depuis le début de l’année 2017, deux scientifiques Marc et Alice étudient l’évolution d’une population de moustiques sur l’île Chépaou. Ils ont réussi à obtenir l’estimation suivante sur l’évolution de la population : si la population contient x moustiques au cours d’une année, alors il y a aura 1.09x − 200 moustiques l’année suivante. Par contre, ils ne sont pour l’instant pas d’accord sur l’estimation de la population en 2017 : ils s’accordent seulement sur le fait que ce nombre est compris entre 8 000 et 12 000. Il faudra donc considérer cette donnée comme une variable.

  • Écrire une fonction f qui prend en argument le nombre x de moustiques à une certaine année et qui renvoie le nombre de moustiques l’année suivante. La valeur de retour de f doit arrondir la réponse à l’entier inférieur. Comme les valeurs obtenues seront toujours positives, vous pouvez utiliser au choix int(..) ou la fonction floor(…) du module math. Exemple: int(4.5) vaut 4 et math.floor(6.75) vaut 6.
  • Écrire une fonction nb_moustiques qui prend en arguments nb_debut, le nombre estimé de moustiques en 2017, et un entier annee_voulue. La fonction doit renvoyer le nombre de moustiques qu’il y aura en annee_voulue.
  • Écrire une fonction annee_atteindra qui prend en argument un entier seuil et un entier nb_debut (qui correspondra au nombre de moustiques en 2017) et qui renvoie l’année à partir de laquelle le nombre de moustiques sera supérieur ou égal à seuil.
  • Question supplémentaire : Écrire un programme principal qui demande à Marc son estimation du nombre de moustiques, puis à Alice la sienne. Votre programme demandera ensuite une année et affichera le nombre de moustiques qu’il y aura cette année-là, selon l’estimation de Marc puis selon celle d’Alice. Enfin, votre programme demandera un seuil et affichera en quelle année on atteint ce seuil, en fonction de chacune des deux estimations.

Exercice tiré de caséine université de Grenoble – proposé par Aurélie Lagoutte

Suite : Exercice 7

Exercice 5 – Bases de Python

Fonctions avec des chaines de caractères

Vous pouvez écrire les fonctions demandées dans l’ordre que vous voulez (et même en créer d’autres, si cela vous paraît utile).

  1. Écrire une fonction ajoute_prefixe qui prend en argument un mot et un préfixe et qui renvoie la chaîne de caractère obtenue en concaténant le préfixe suivi du mot. Par exemple, ajoute_prefixe(« mentir », « de ») vaut « dementir ».
  2. Écrire une fonction repete qui prend en argument un mot et un entier n et qui renvoie la chaîne de caractères obtenue en répétant le mot n fois à la suite (sans séparation). Par exemple, repete(« bla », 3) vaut « blablabla ».
  3. Écrire une fonction ajoute_longueur qui prend comme argument un mot et qui ajouter sa longueur au début et à la fin. Par exemple, ajoute_longueur(« toto ») vaut « 4toto4 ».
  4. Note: On rappelle que la longueur d’un mot est obtenue avec la fonction len, par exemple len(« toto ») vaut 4. De plus, pour convertir un entier ou flottant en chaînes de caractères, il faut utiliser le mot clé str(…). Par exemple, str(4) vaut « 4 ».
  5. Écrire une fonction que_des_nombres qui prend en argument un mot et qui renvoie la chaîne de caractères obtenue à partir du mot en remplaçant chaque lettre par sa position dans le mot. Par exemple, que_des_nombres(« toto ») vaut « 1234 », et que_des_nombres(« bonjour ») vaut « 1234567 ».

Exercice tiré de caséine université de Grenoble – proposé par Aurélie Lagoutte

Suite : Exercice 6

Exercice 4 – Bases de Python

Lettre par lettre

Ecrire un programme qui commence par demander à l’utilisateur un nombre avec « Nombre max de lettres ? », puis qui demande répétitivement une lettre à l’utilisateur en affichant « Lettre : » jusqu’à ce que:

  • soit le nombre max. de lettres soit atteint,
  • soit l’utilisateur tape « stop » à la place de la lettre attendue.

Le programme doit finir en affichant le mot obtenu par la concaténation de toutes les lettres données par l’utilisateur.

Note: on ne demande pas de vérifier que l’utilisateur ne tape qu’une seule lettre à chaque fois.

Exemple 1
Nombre max de lettres ? 3
Lettre : a
Lettre : b
Lettre : c
abc

Exemple 2
Nombre max de lettres ? 4
Lettre : a
Lettre : b
Lettre : stop
ab

Exemple 3
Nombre max de lettres ? 0

Exemple 4
Nombre max de lettres ? 5
Lettre : stop

Exercice tiré de caséine université de Grenoble – proposé par Aurélie Lagoutte

Suite : Exercice 5

Exercice 3 – Bases de Python

Factorielle

Ecrire un programme qui demande un entier positif n et qui calcule la factorielle de n. Si le nombre donné est strictement négatif, le programme doit afficher un message d’erreur et terminer. Pour les phrases à afficher, vous suivrez celles des exemples suivants.

Rappel: la factorielle de n est définie par: n! = 1 x 2 x 3 x …. x n

Exemple 1:

n=? -5
La factorielle n’est pas definie pour les nombres négatifs.

Exemple 2:

n=? : 5
La factorielle de 5 vaut 120 .

Exemple 3:

n=? 0
La factorielle de 0 vaut 1 .

Exercice tiré de caséine université de Grenoble – proposé par Aurélie Lagoutte et Amir Charif


Exercice 4 – Lettre par lettre

Exercice 2 – Bases de Python

Les comptes de Guillaume et Marion

Guillaume et Marion veulent un petit programme pour gérer leurs comptes bancaires. Ils ont chacun un compte, et veulent recevoir différents messages selon l’état de leur compte et celui de leur conjoint: les deux positifs, ou bien les deux négatifs, ou bien l’un positif et l’autre négatif avec un transfert possible pour rétablir la situation, ou bien l’un positif et l’autre négatif sans transfert possible pour rétablir la situation.

Exemples d’execution :

Exemple 1:

Lancement de la gestion des comptes? *l’utilisateur entre non*
OK. A bientot.

Exemple 2:

Lancement de la gestion des comptes? *l’utilisateur entre oui*
Solde du compte de Guillaume? *l’utilisateur entre 150.5*
Solde du compte de Marion? *l’utilisateur entre 340.12*
Tous les deux en positif!

Exemple 3:

Lancement de la gestion des comptes? *l’utilisateur entre oui*
Solde du compte de Guillaume? *l’utilisateur entre -112*
Solde du compte de Marion? *l’utilisateur entre -240.4*
Tous les deux en négatif!
Impossible de rétablir la situation.

Exemple 4:

Lancement de la gestion des comptes? *l’utilisateur entre oui*
Solde du compte de Guillaume? *l’utilisateur entre 350.87*
Solde du compte de Marion? *l’utilisateur entre -240*
Marion est en négatif.
Guillaume peut lui transférer 240 euros (il lui restera 110.87 euros).

Exemple 5:

Lancement de la gestion des comptes? *l’utilisateur entre oui*
Solde du compte de Guillaume? *l’utilisateur entre -270*
Solde du compte de Marion? *l’utilisateur entre 250*
Guillaume est en négatif.
Impossible de rétablir la situation.

 /!\ Lorsque que l’on vous demande d’afficher une phrase à l’écran, vous devez suivre celle de l’exemple à la lettre (seuls les différences de ponctuation, d’espaces, de majuscules, et de certains accents sont tolérées).

Exercice tiré de caséine université de Grenoble – proposé par Aurélie Lagoutte


Exercice 3 – Factorielle

Exercice 1 – Bases de Python

Ecrire un programme qui:

  • demande à l’utilisateur « Combien de « la » pour l’écho ? »
  • Affiche « Début: « la » »
  • Affiche l’écho, c’est-à-dire « la » autant de fois que choisi par l’utilisateur

Rappel: pour poser une question utiliser la fonction: input.

a=input("question ?")   # pose la question et stocke la réponse dans la variable, qui est une chaine de caractere (str).
a=int(a)   # transforme la chaine de caractere en entier (int)

Exemple 1:
Combien de « la » pour l’écho? *l’utilisateur entre 3*
Début: « la »
lalala 

Exemple 2:
« Combien de « la » pour l’écho? » *l’utilisateur entre 5*
Début: « la »
lalalalala 

 /!\ Lorsque que l’on vous demande d’afficher une phrase à l’écran, vous devez suivre celle de l’exemple à la lettre (seuls les différences de d’espaces, de majuscules et d’accents sont tolérées). Dans cet exercice, une attention toute particulière est apportée à l’utilisation des guillemets: ne les oubliez pas!

Exercice tiré de caséine université de Grenoble – proposé par Aurélie Lagoutte


Exercice 2 – Les comptes de Guillaume et Marion