tite fractale

plus_ou_moins_exceptionnel.py

télécharger

Attention ! Cet interpréteur n’est pas totalement compatible avec Python3.

Theme:

 

Version inerte :

"Jeu du «plus ou moins», implémentation pédagogique à base d’exceptions."

import random

MAX = 20
STOP_STR = "merci"
nb_mystere = random.randrange(MAX)

class PlusOuMoinsException(Exception): pass
class StopException(PlusOuMoinsException): pass
class BravoException(PlusOuMoinsException): pass
class TropException(PlusOuMoinsException):
    def __init__(self, code = 0):
        self.code = code

def proposition(nb_mystere):
    try:
        entree = input()
        if entree == STOP_STR:
            raise StopException    # Non récupérée par le except qui vient.
        proposition = int(entree)
    except KeyboardInterrupt:
        print()
        raise StopException        # Conversion d’exception.
    if proposition == nb_mystere:
        raise BravoException       # Ici la classe.
    elif proposition < nb_mystere:
        raise TropException(0)     # Ici l'objet.
    else:
        raise TropException(1)     # Exceptions traitées par l(es) appelant(s).

print("Bienvenue dans le jeu du « plus ou moins ».")
print("Il consiste à deviner un nombre dans range({0}).".format(MAX))
print("Taper « {0} » ou Ctrl+C pour arrêter.".format(STOP_STR))
while True:
    print("Votre tentative: ", end="")
    try:                           # C’est ici que les exceptions sont gérées.
        proposition(nb_mystere)
    except StopException:
        print("Au revoir.")
        break
    except BravoException:
        print("Gagné, on recommence !")
        nb_mystere = random.randrange(MAX)
    except PlusOuMoinsException as e:   # TropException pas attrapée en tant
        adjectifs = ["petit", "grand"]  # que telle, on utilise la hiérarchie.
        print(" --> Trop {0}.".format(adjectifs[e.code]))
    except ValueError as e:
        print("Veuillez entrer un nombre.")
    except Exception as e:         # Difficile de tomber ici, quoique…
        print("Erreur non gérée.")
        raise e
        print("Tant pis.")
    finally:
        print("Bien bien bien…")









Page générée le 27/05/2021, 09h53'27" (page virtuelle).
historique global