C11 : Exercices
C11.E1 : Division euclidienne
1) Écrire une fonction div_eucl(a:int, b:int) ->tuple qui prend deux entiers en paramètres et renvoie le quotient euclidien et le reste de la division de a par b.
On écrira deux version, l'un qui utilise les opérateurs // et %, l'autre qui ne les utilise pas.
2) Ajouter une docstring.
3) Écrire le programme principal qui demande deux nombres à l'utilisateur et affiche proprement le quotient et le reste de la division du premier nombre par le deuxième.
C11.E2 : Les entiers suivants
1) Écrire une fonction suivants(n:int) -> tuple dont le paramètre est un entier et qui renvoie 1 tuple formé des 3 entiers suivants.
2) Écrire le code du programme principal qui permet de tester cette fonction.
C11.E3 : Moyenne
Écrire une fonction moyenne(t:tuple)->float qui prend un tuple de nombres entiers en paramètre et renvoie la moyenne de ces nombres.
C11.E4 : L'age du capitaine
Dans un programme, on décide de stocker les informations sur des personnes sous la forme de tuples dont la première valeur est le nom, la deuxième le prénom et la troisième l'année de naissance. Ex : ("Jean", "Némard", 1985)
L'importation du module datetime permet d'utiliser l'instruction datetime.datetime.now().year qui renvoie l'année en cours sous la forme d'un entier.
1) Écrire une fonction age(t:tuple)->int qui prend le tuple correspondant à une personne en paramètre et renvoie l'age de la personne.
2) Écrire le programme principal qui :
- - demande un nom, un prénom et une date de naissance à l'utilisateur ;
- - stocke ces informations dans un tuples ;
- - affiche le prénom et l'age de la personne.
C11.E5 : Emploi du temps
On dispose de la variable semaine qui est une liste dont les éléments sont des tuples constitués du jour de la semaine et du nombre d'heures de cours.
Par exemple : semaine = [("lundi" , 5), ("mardi", 2), ("mercredi", 8), ("jeudi", 6), ("vendredi", 3)]
1) Écrire une fonction total_heures(semaine : list)->int qui prend en paramètre la liste semaine et renvoie le nombre total d'heures de cours :
>>> total_heures(semaine)
24
2) Écrire une fonction journees_heures_inferieur_a_4(semaine : list)->list qui prend en paramètre la liste semaine et renvoie une liste de tuple constitué des jours de la semaine où le nombre d'heures de cours est inférieur à 4 :
>>> liste_journees = journee_heures_inferieur_a_4(semaine)
>>> liste_journees
[('mardi', 2), ('vendredi', 3)]
C11.E6 : Écriture en h, min ,s
Travail à faire : Compléter la fonction du programme ci-dessous.
# Définition des fonctions
def s_vers_hms(sec):
"""
Fonction qui, à partir d'un nombre de secondes,
renvoie le nombre d'heures, de minutes et de secondes correspondant
paramètre sec : (int) un entier positif correspondant à des secondes
valeurs renvoyées :
(int) le nombre d'heures
(int) le nombre de minutes
(int) le nombre de secondes
Exemples :
>>> s_vers_hms(3600)
(1, 0, 0)
>>> s_vers_hms(1505)
(0, 25, 5)
>>> s_vers_hms(5)
(0, 0, 5)
"""
# Partie à compléter
# Programme principal
import doctest
doctest.testmod(verbose = True)
C11.E7 : Négatif d'une image
Le négatif d'une image est une image dont les couleurs RGB des pixels sont les couleurs complémentaires des pixels originaux :
Pour obtenir le négatif d'une image automatiquement, nous allons nous écrire un programme en utilisant le module PIL.
Le module PIL permet de travailler avec des objets-image créés à partir de fichiers (png, jpg...).
Voici quelques méthodes des objets-images du module PIL :
- •
sizerenvoie un tuple de deux valeurs contenant la largeur et la hauteur de l'image ; - •
getpixelprend un tuple correspondant aux coordonnées d'un pixel en paramètre et renvoie un tuple correspondant à la couleur RGB de ce pixel ; - •
putpixelprend deux tuples en paramètre (le premier correspond aux coordonnées d'un pixel ; le deuxième à une couleur RGB) et renvoie un tuple correspondant à la couleur RGB du pixel
1) Télécharger l'image logo_python.png dans le répertoire de travail.
2) Copier le code du programme ci-dessous dans un fichier qui sera enregistré dans le même répertoire que l'image.
from PIL import Image
img = Image.open('logo_python.png') # Création d'un objet-image à partir du fichier
... = img.size # ...
rgb_im = img.convert('RGB')
for x in range(largeur):
for y in range(hauteur):
... = rgb_im.getpixel((x, y)) # ...
img.putpixel((x, y), (256 - r, 256 - g, 256 - b))
img.show()
3) Remplacer les '...' des lignes 4 et 9 du programme pour qu'il donne le résultat attendu.