Connexion élèves

Choisir le(s) module(s) à installer :

Exercices adaptés des sources suivantes :

POO - Exercices

Jeu de cartes ( travail sur papier )

Des cercles

  1. Écrire une classe Cercle. Les objets construits à partir de cette classe seront des cercles de tailles variées.

    Attributs : rayon ( initialisé à l'instanciation d'un objet, donc passé en argument au constructeur )

    Méthodes :

    • surface() : renvoie la surface du cercle
    • perimetre() : renvoie le périmétre du cercle
    • est_plus_grand(autre_cercle) : renvoie True si le rayon de self est plus grand que celui d'un autre objet de type Cercle
  2. Instancier ensuite 5 objets de type Cercle ( de rayon quelconque ).
  3. Afficher la surface et le périmètre du premier et du dernier cercle.
  4. Comparer la taille du deuxième et du quatrième cercle.

SOLUTION

Affichage d'un objet

  1. Reprendre la classe Cercle précédente, créer un objet quelconque, et essayer de l'afficher dans la console Python : comment interpréter l'affichage obtenu ?
  2. une méthode spéciale existe, qui se substitue automatiquement au print "classique" à partir du moment où elle a été définie : la méthode __str__ :
    
    class Cercle:
    	def __init__(self,...):
    		"""Constructeur"""
    		...
    	
    	def __str__(self):
    		"""Méthode d'affichage"""
    		...
    		return ...				
    				

    Cette méthode doit renvoyer une chaîne de caractères représentant les informations ( souvent, les attributs de l'objet ) à afficher.

    Écrire le code d'une méthode __str__ pour la classe Cercle, qui permettra d'afficher le rayon d'un objet de type classe :

  3. 
    c1 = Cercle(21)
    
    print(c1)
    
    >>> rayon = 21			
    				
    			

SOLUTION

Des chiens.

Écrire une classe Chien.

Attributs :

  • nom
  • points_sante : initialisé à la valeur par défaut 100 à l'instanciation
  • aboiement : chaîne de caractères

Méthodes :

  • mordre(autre_chien) : fait baisser les points de santé d’un autre objet de type Chien
  • manger() : augmente les points de santé
  • grogner() : renvoie « Grrr... » + son aboiement
  • machouiller(chaîne) : renvoie la chaîne passée en argument mélangée aléatoirement

Pour tester la classe :

  1. Instancier quelques chiens ayant des noms et des aboiements différents
  2. faire manger un des chiens et vérifier que ses points de santé ont bien augmenté
  3. faire grogner un chien
  4. faire mâchouiller à un chien une chaîne de caractères quelconque
  5. faire mordre un chien par un autre et vérifier que ses points de santé ont bien baissé.

SOLUTION

Une horloge.

Deux versions à cet exercice :

La première version est sans doute la plus délicate, mais en même temps la plus formatrice; si vous ne voyez vraiment pas comment résoudre le problème, passez à la deuxième version, plus simple...

1ère version "Résolution de problème"

Compléter le code ci-dessous de façon à obtenir l'affichage de l'heure seconde après seconde :


	13 : 59 : 55
	13 : 59 : 56
	13 : 59 : 57
	13 : 59 : 58
	13 : 59 : 59
	14 : 0 : 0
	14 : 0 : 1
	14 : 0 : 2
	14 : 0 : 3
	14 : 0 : 4
	14 : 0 : 5
	14 : 0 : 6		
	....			
			
from time import sleep # PROGRAMME PRINCIPAL horloge = Horloge(13,59,50) while True: # boucle infinie horloge.affiche() # affichage de l'heure sleep(1) # pause de 1 s horloge.tic_tac() # augmentation de l'heure de 1 s

SOLUTION

2ème version "Résolution guidée"

Créer une classe Horloge, destinée à afficher l'heure.

Attributs :

  • heures
  • minutes
  • secondes

Les valeurs initiales des attributs devront être passées en argument au constructeur lors de l'instanciation de l'objet de type Horloge.

Méthodes :

  • ticTac() : cette méthode augmente l’horloge d’une seconde, et gère également le changement de minutes et d'heure
  • affiche() : cette méthode affiche l'heure sous la forme hh:mm:ss

Instancier un objet de type Horloge, et pour "animer" l'affichage de l'heure seconde après seconde, utiliser le code suivant :

from time import sleep class Horloge: pass # PROGRAMME PRINCIPAL while True: # boucle infinie pass # affichage de l'heure sleep(1) # pause de 1 s pass # augmentation de l'heure de 1 s

SOLUTION

Des grandes boîtes et des petites boîtes et des moyennes boîtes...( révisions Première ! )

1.1. Écrire une classe Boite; cette classe a pour attributs :

  • longueur
  • largeur
  • hauteur

Ces trois attributs sont dans un ordre décroissant : longueurlargeurhauteur.

Cette classe a pour méthodes :

  • volume(), qui comme son nom l’indique donne le volume d’une boite
  • rentreDans(autre_boite), qui renvoie True si l’objet Boite rentre dans autre_boite.

2. Créer aléatoirement une liste d’une vingtaine de boîtes ( on peut choisir des dimensions entre 1 et 50 ). Ces boîtes peuvent être rangées comme éléments d'une liste.

3. A l’aide d’un algorithme glouton, donner une suite de boîtes aussi grande que possible qui rentrent les unes dans les autres.

Indication : il faudra au préalable trier la liste des boîtes par volume décroissant. Pour cela, il peut être intéressant dans un but de révision, d'utiliser un des algorithmes à connaître, à savoir le tri par insertion ou le tri par sélection.

Réfléchissez ensuite à l'algorithme glouton à utiliser pour trouver la suite la plus grande de boîtes imbriquées...

SOLUTION