Activite 1
Classe et objet¶
Exercice 1¶
- Compléter la classe Livre avec des attributs et des methodes.
- Instancier deux livres différents.
- 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é :
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__
.