111 lines
2.9 KiB
Python
111 lines
2.9 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
Author: freezed <git@freezed.me> 2018-01-17
|
|
Licence: `GNU GPL v3`_
|
|
Version: 0.1
|
|
|
|
.. _GNU GPL v3: http://www.gnu.org/licenses/
|
|
"""
|
|
|
|
|
|
class TableauNoir:
|
|
"""
|
|
Definis une surface sur laquelle on peut ecrire.
|
|
|
|
On peut lire et effacer, par jeu de methodes. L'attribut
|
|
modifie est 'surface'
|
|
"""
|
|
|
|
def __init__(self):
|
|
"""Par defaut, notre surface est vide"""
|
|
self.surface = ""
|
|
|
|
def ecrire(self, texte):
|
|
"""
|
|
Methode permettant d'ecrire sur la surface du tableau.
|
|
|
|
Si la surface n'est pas vide, on saute une ligne avant de
|
|
rajouter le message a ecrire
|
|
|
|
:texte a: Le texte a ajouter au tableuu
|
|
:type a: string
|
|
:return: None
|
|
"""
|
|
if self.surface != "":
|
|
self.surface += "\n"
|
|
self.surface += texte
|
|
|
|
def lire(self):
|
|
"""
|
|
Cette methode se charge d'afficher, grace a print,
|
|
la surface du tableau
|
|
"""
|
|
|
|
print(self.surface)
|
|
|
|
def effacer(self):
|
|
"""Cette methode permet d'effacer la surface du tableau"""
|
|
self.surface = ""
|
|
|
|
|
|
class Duree:
|
|
"""
|
|
Classe contenant des durees sous la forme d'un nombre de minutes
|
|
et de secondes
|
|
"""
|
|
|
|
def __init__(self, min=0, sec=0):
|
|
"""Constructeur de la classe"""
|
|
self.min = min # Nombre de minutes
|
|
self.sec = sec # Nombre de secondes
|
|
|
|
def __str__(self):
|
|
"""Affichage MM:SS"""
|
|
return "{:02}:{:02}".format(self.min, self.sec)
|
|
|
|
def __add__(self, objet_a_ajouter):
|
|
"""L'objet a ajouter est un entier, le nombre de secondes"""
|
|
self.sec += objet_a_ajouter # On ajoute la duree
|
|
|
|
if self.sec >= 60: # Si le nombre de secondes >= 60
|
|
self.min += self.sec // 60
|
|
self.sec = self.sec % 60
|
|
|
|
return self # On renvoie la nouvelle duree
|
|
|
|
def __sub__(self, objet_a_soustraire):
|
|
"""
|
|
Soustrait le nombre de seconde passe en parametre
|
|
Ne retourne jamais de duree negative
|
|
|
|
:param a: secondes a soustraire
|
|
:type a: int
|
|
:return: object
|
|
"""
|
|
allsec = (self.min * 60) + self.sec
|
|
|
|
if objet_a_soustraire > allsec:
|
|
self.min = 0
|
|
self.sec = 0
|
|
else:
|
|
allsec -= objet_a_soustraire # On soustrait la duree
|
|
self.min = allsec // 60
|
|
self.sec = allsec % 60
|
|
|
|
return self # On renvoie la nouvelle duree
|
|
|
|
|
|
if __name__ == "__main__":
|
|
# pseudo-tests de la class «Duree»
|
|
print("[03:05]:", Duree(3, 5)) # __add__
|
|
print("[03:55]:", Duree(3, 5) + 50)
|
|
print("[05:35]:", Duree(3, 5) + 150)
|
|
print("[14:41]:", Duree(13, 51) + 50)
|
|
print("[11:05]:", Duree(10, 3*5) + 50)
|
|
|
|
print("[10:00]:", Duree(10, 5) - 5)
|
|
print("[00:05]:", Duree(10, 5) - 600)
|
|
print("[00:00]:", Duree(2, 5) - 600)
|