Chapitre 5 : Créer ses propres classes
Exercices
1) Classe "vecteurs"
Créez une classe Vecteur. Elle doit avoir les membres suivants :
- Des coordonnées
coord
- Une méthode
get_vec(self)
qui retourne un tuple contenant les coordonnées du vecteur - Des méthodes
set(self, coord)
,set_component(self,index,value)
qui changent la totalité du vecteur ou une seule de ses composantes - Un constructeur
__init__(self, coord)
qui initialise les coordonnées. -
norme(self)
qui renvoie la norme du vecteur -
prod_scal(self,vec)
qui renvoie le produit scalaire avec un autre vecteur (vec). -
prod_vect(self,vec)
qui renvoie un vecteur "produit vectoriel" si le vecteur est à trois dimensions.
Testez également les fonctionnalités de votre classe. Vérifiez bien que (vxw).v = (vxw).w = 0.
2) Classe histogramme
Un histogramme est une méthode de représentation de données discrètes très souvent utilisée en physique. Imaginons que les données nous intéressant tombent toujours entre deux nombres "a" et "b", on va segmenter l'axe des "x" en N intervalles de même longueur et compter le nombre d'événements étant tombés dans chaque intervalle.
Écrivez une classe histogramme avec :
- Un tableau de nombres et deux bornes (minimum et maximum) comme membres.
- Une méthode d'initialisation qui demande les bornes et le nombre d'intervalles à l'utilisateur et crée le tableau de nombres adéquat.
- fill(x) qui ajoute 1 à l'entrée du tableau correspondant à la valeur de x donnée.
- print() qui affiche l'histogramme en console (on peut l'afficher verticalement dans un premier temps)
Vérifiez ensuite le fonctionnement de votre classe
Complément : Imaginons que nous voulions pouvoir afficher des histogrammes avec des entrées plus grandes que la taille de l'écran (50-100 caractères). Éditez la fonction "print" afin qu'elle redimensionne l'histogramme. N'oubliez pas d'afficher l'échelle.
3) Et les deux ensemble et un peu d'aléatoire
Il vous sera expliqué sous peu le fonctionnement de générateurs de nombres aléatoires ainsi que la manière de les implémenter/utiliser en python.
Dans le cadre de cet exercice, nous voudrons générer des nombres flottants aléatoires entre 0 et 1. Pour ce faire, il suffit d'utiliser la syntaxe illustrée ci-dessous :
from random import random # À écrire une seule fois au début du programme
random() # Peut être appelée autant de fois que l'on veut.
# Retourne un nombre aléatoire entre 0 et 1.
Générez un grand nombre (100 dans un premier temps, puis jusque des dizaines de milliers) de couples de vecteurs de coordonnées x,y,z aléatoires entre 0 et 1. Enregistrez l'angle entre ces deux vecteurs dans un histogramme et affichez le en console en fin de programme.
4) Tricher au pendu... -- Difficile
Créez un programme pour vous faciliter la vie au jeu du pendu. On vous donne la liste de mots de la langue française (sans accents ou cédilles), et vous devrez déduire quelles lettres demander pour gagner.
Pour y accéder dans votre code, téléchargez la liste :
wget https://cp3-git.irmp.ucl.ac.be/mdelcourt/lphys1201/raw/master/Chapter_5/word_list.py
puis, dans votre code :
from word_list import word_list
print (word_list)
Ensuite, implémentez une classe qui :
- Lors de l'initialisation va prendre tous les mots qui ont le bon nombre de lettres.
- Affiche les lettres qui apparaissent le plus souvent dans les mots valides.
- Demande à l'utilisateur la lettre qu'il a demandée à l'autre joueur
- Demande à l'utilisateur d'afficher ce qu'il sait du mot. Par exemple :
et_d___t
- Enlève tous les mots qui ne correspondent pas de la liste
- Si il y a moins de 50 mots correspondants, les afficher