Adloun

Python (école d'ingénieur) · Chapitre 7 · Exercice

Exception personnalisée

Fichiers, exceptions et modules

Énoncé

Créer une exception personnalisée TemperatureInvalideError et l'utiliser dans une fonction convertir_celsius_en_fahrenheit(celsius) qui refuse les températures inférieures au zéro absolu (°C).

# Définition de l'exception personnalisée
class TemperatureInvalideError(Exception):
    """Exception levée lorsqu'une température est inférieure au zéro absolu."""
    def __init__(self, celsius, message="Température inférieure au zéro absolu (-273.15°C)"):
        self.celsius = celsius
        self.message = message
        super().__init__(self.message)

def convertir_celsius_en_fahrenheit(celsius):
    """
    Convertit une température de Celsius en Fahrenheit.
    Lève TemperatureInvalideError si celsius < -273.15.
    """
    ZERO_ABSOLU = -273.15
    if celsius < ZERO_ABSOLU:
        raise TemperatureInvalideError(celsius, 
            f"Température {celsius}°C inférieure au zéro absolu ({ZERO_ABSOLU}°C)")
    return celsius * 9/5 + 32

# Test de la fonction
def test_conversion():
    temperatures = [0, 100, -273.15, -300]
    for t in temperatures:
        try:
            f = convertir_celsius_en_fahrenheit(t)
            print(f"{t}°C = {f}°F")
        except TemperatureInvalideError as e:
            print(f"Erreur : {e}")
            print(f"Valeur reçue : {e.celsius}°C")

test_conversion()

Corrigé

Le test affiche :

0°C = 32.0°F
100°C = 212.0°F
-273.15°C = -459.66999999999996°F
Erreur : Température -300°C inférieure au zéro absolu (-273.15°C)
Valeur reçue : -300°C

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →