Aller au contenu

Activite 1

Classe et objet

correction indicative

Exercice 1

  • Compléter la classe Livre avec des attributs et des methodes.
  • Instancier deux livres différents.
class Livre:
  pass
  • Modifier la valeur des attributs après avoir créé les objets.

Exercice 2

  • Compéter le code ci-dessous.
class Combattant:

    def __init__(self, vie, attaque):
        self.vie = vie
        self.attaque = attaque
        self.vivant = True

    def perdre_vie(self, points):
        # TODO : completer en retirant de la vie

        if self.vie <= 0:
            # TODO : Compéter en modifiant les attributs vie et vivant
  • Verifier l'execution du code en instanciant des combattants et en verifiant que la methode perdre_vie marche correctement en utilisant des assertions

Exercice 3

Etudiez la documentation (en anglais) pour random.random() : https://docs.python.org/3/library/random.html#random.random

Les plus curieux / curieuses pourront regarder le code source : https://github.com/python/cpython/blob/3.11/Lib/random.py

Compléter le code ci-dessous (lisez les commentaires).

####################################################################
# Date    :
# Auteurs :
####################################################################

####### Exercice 1 #######

import random

class Piece :
    def alea(self) :
        # TODO: Retourner un nombre compris entre 0 et 1
        pass
    def moyenne(self, n):
        # TODO: Retourner la moyenne des n tirages aléatoires
        pass

# TODO: Afficher la moyenne de 100 tirages aléatoires

Exercice 4 : découverte de pygame

Installation

Si pygame n'est pas installé :

pip install pygame

Classe Balle

Compléter le code ci-dessous pour afficher une balle bleue au centre de l'écran:

import pygame
from pygame import *

pygame.init()

fenetre = pygame.display.set_mode([500, 500])

class Balle(pygame.sprite.Sprite):
    """ Une balle qui va se deplacer sur l'ecran
    """
    def __init__(self, x, y, rayon, ecran):
      # TODO : completer
      pass

    def draw(self):
        pygame.draw.circle(fenetre, (0, 0, 255), [self.x, self.y], self.rayon)


clock = pygame.time.Clock()

#TODO : mettre une balle de diametre 40 au centre de la fenetre
balle1 = Balle(, , , fenetre)

running = True
while running:
    # Verifier si l'utilisateur a ferme la fenetre
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

        # TODO : CORRIGER l'erreur et ajouter un fond blanc (RGB)
        ecran.fill(( , , ))

        # TODO : Dessiner la balle

        pygame.display.flip()
        clock.tick(60)

pygame.quit()

Exercice 5

L'héritage permet d'éviter de dupliquer du code inutilement. On utilise une classe de base, dite aussi classe parente (ici Joueur) dont une autre classe hérite. On peut alors réutiliser les méthodes de la classe parente.

class Joueur:
    def __init__(self, nom):
        self.nom = nom
    def jouer(self, jeu):
        print("Je joue à", jeu)

class JoueurProfessionel(Joueur):
    def participer_competition(self, competition):
        print("Je m'appelle", self.nom , "je participe à", competition)

j = JoueurProfessionel("John")
j.jouer("WOOW")
j.participer_competition("Call of Duty League")

Créer une classe qui hérite d'une autre classe et réutilise les méthodes de la classe parente.

Exercice 6

Ici on va utiliser en particulier deux méthodes spéciales de python __str__ et __eq__. Plus d'information ici : https://docs.python.org/3/library/functions.html#func-str

Écrire une classe Fraction qui permet de représenter les nombres rationnels. Cette classe possède deux attributs: num et den. L'attribut num est un entier relatif (il peut être nul) et désigne le numérateur de la fraction. L'attribut den est un entier strictement positif et désigne le dénominateur de la fraction (mathématiquement, il est toujours possible de s'arranger pour que le dénominateur soit positif).

  • Écrire le constructeur de la classe, en vous assurant que la contrainte sur le signe du dénominateur soit bien respectée.
  • Écrire une méthode str qui renvoie une chaîne de caractères de la forme "num/den". Si le dénominateur est égal à un, on retournera "num" plutôt que "num/1".
  • Écrire la méthode magique eq qui prend pour paramètre une autre fraction et teste s'il y a une égalité entre self et cette autre fraction.

Tester le fonctionnement des méthodes __str__ et __eq__.