Codage et Représentation de l’information, année 2019
Rappel
Les TD sont a rendre via Moodle avant vendredi soir, minuit. Tout TD non rendu entraîne un 0 immédiatement.
Ces TDs sont à réaliser sous linux. Il faut donc
allumer (ou redémarrer) votre machine de TP et la faire redémarrer sous
Linux. Les TDs sont à retourner via Moodle sous forme
d’une archive tar.gz
. Pour comprimer un
dossier dans ce format il faut exécuter la commande:
Vous devez faire le maximum du TP dans le terminal, la liste des commandes tapées seront accessibles pour les correcteurs (si tout se passe bien).
Les questions avec une étoile (*
) sont facultatives et
bien plus difficiles.
À tout moment vous pouvez consulter le manuel d’une commande en
tapant man nom_de_commande
.
Préparation du dossier TD6
Créez un dossier
TD6
dans votre dossierCRI
, ainsi qu’un fichierréponses
Ajoutez votre nom et la date du jour dans le dossier
réponses
en ligne de commande uniquement.
Rappel d’utilisation de Python
Dans la suite, tous les scripts sont à écrire avec un éditeur comme
atom
et à enregistrer dans un fichier avec une extension
.py
dans le répertoire TD6
. Pour lancer votre
script enregistré dans un fichier pgm.py
exécutez la
commande
python3 pgm.py
Remarque Vous n’êtes pas obligés d’utiliser la
commande touch
pour créer un nouveau fichier pour un
script. Si vous le désirez, vous pouvez utiliser atom pour créer de
nouveaux fichiers.
Boucles simples et chaînes de caractères
- Boucle avec un accumulateur entier
Question 1
Dans un fichier exo1.py
ajoutez les lignes
suivantes:
= 0
accu = 20
taille for i in range(taille):
= accu + i
accu print("Résultat:", accu)
- Indiquez dans le fichier
réponses
ce que fait ce programme. - Dans un fichier
exo1b.py
créez unefonction_exo1
qui prend en argument la variabletaille
exécute la boucle, et qui retourne la variableaccu
. Attention, elle ne doit pas contenir deprint
. - N’oubliez pas d’ajouter la documentation à votre fonction.
- Ajoutez dans le script
exo1b.py
des exemples d’utilisation de votre fonction.
Question 2
Rappel: la factorielle, notée n! est le produit des entiers de 1 à n. En vous aidant de la page wikipedia à propos des arrangements et combinaisons
Dans un fichier exo1c.py
, répondez aux questions
suivantes. (Dans aucune définition de ces fonctions, on ne doit trouver
de d’appel à print
.)
- Écrire une fonction
prod
qui prend en argument deux nombres et calcule le produit des nombres entiers compris entre ces deux nombres. Afficher le résultat deprod
pour 10 et 20, 5 et 120. - Écrire une fonction
arrangements
qui prend en argument deux nombres \(n\) et \(p\) et calcule le nombre d’arrangements de \(p\) éléments pris parmi \(n\). Afficher le résultat dearrangements
pour 10 et 20, 5 et 120. - Écrire une fonction
combinaisons
qui prend en argument deux nombres \(n\) et \(p\) et calcule le nombre de combinaisons de \(p\) éléments pris parmi \(n\). Afficher le résultat decombinaisons
pour 10 et 20, 5 et 120.
- Chaines de caractères
Dans un fichier exo2.py
ajoutez les lignes
suivantes:
= "abcdefghijklmnopqrstuvwxyz"
lettres print(lettres)
print(lettres+lettres)
print(lettres[10])
print(lettres[3])
print(lettres[-4])
print(lettres[:10])
print(lettres[3:12])
print(lettres[-10:])
print(lettres[-20:-10])
En vous aidant éventuellement d’Internet Proposez une explication sur
le fonctionnement de l’opérateur [..]
.
Dans le fichier exo2b.py
, écrire une fonction
plus_court
qui prend en argument une chaîne de caractères
et qui retourne une version raccourcie contenant uniquement les
six caractères de début, de fin et “…” au milieu.
Par exemple, plus_court(lettres)
doit retourner
"abcdef...uvwxyz"
.
N’oubliez pas d’ajouter une documentation. Illustrez le bon
fonctionnement sur quelques exemples
(abracadabrantesquement
et d’exemples de votre choix).
- Chaines de caractères et boucles
Ajoutez dans un fichier exo3.py
les lignes suivantes
= "Le python est un langage de programmation de haut niveau"
cocotte_minute = len(cocotte_minute)
oeuf = ""
poelle_a_frire for pilon_de_poulet in range(oeuf):
if pilon_de_poulet % 2 == 0:
= poelle_a_frire + cocotte_minute[pilon_de_poulet]
poelle_a_frire print(poelle_a_frire)
- Indiquez les variables qui apparaissent dans ces lignes ainsi que leur type.
- Proposez une explication sur ce que fait ce programme dans le fichier réponses.
Dans un fichier exo3b.py
modifier le nom des variables
pour que leur nom illustre mieux leur rôle dans le programme.
Écrire une fonction dans un fichier exo3c.py
un_sur_deux
qui prend en argument une chaîne de caractères
et qui retourne une chaîne de caractères qui ne contient qu’un caractère
sur deux de l’argument.
Par exemple, un_sur_deux("Coucou")
doit retourner la
chaîne de caractère "Cuo"
.
Vérifier à l’aide d’exemples dans exo3c.py
que la
fonction réalise bien ce qui est spécifié.
- Une boucle avec un accumulateur
str
Dans un fichier exo4.py
ajoutez les lignes
suivantes:
= ""
chaine = 20
taille for i in range(taille):
= chaine + " + " +str(i)
chaine print(chaine)
Comme pour l’exercice 1, créez dans un fichier exo4b.py
une fonction fonction_exo4
qui prend en argument la
variable taille
et qui retourne la chaîne de caractères
après la boucle. Ajoutez une documentation et des exemples d’utilisation
de cette fonction.
Dans un fichier exo4c.py
ajoutez les lignes:
from exo1b import fonction_exo1
from exo2b import plus_court
from exo4b import fonction_exo4
print("Résultat de", plus_court(fonction_exo4(10)), "=", fonction_exo1(10))
Dans le fichier réponses
:
- Proposez une explication sur le rôle de la construction
from ... import ...
. - Expliquez le fonctionnement de ce script.
- Un programme un peu compliqué
Téléchargez le fichier fable.py et exécutez
le. Indiquez dans le fichier réponses
ce que fait la
fonction mystere
.
Attention: On attend une réponse précise sur son fonctionnement et pas uniquement un commentaire sur ce qu’elle produit.
Compiled the: mer. 04 sept. 2024 12:49:36 CEST