Hauteur du plafond nuageux

Voici un exercice dont l’objectif est de calculer et d’afficher la hauteur du plafond nuageux à partir de la température et du taux d’humidité dans une page web.

En premier, nous allons commencer par coder la méthode de calcul en python pour ensuite écrire le script d’une fonction, à l’aide de données nous permettant de calculer la base d’un nuage et le point de rosée.

1) On calcule la température de rosée qui est la température à partir de laquelle apparait la première goutte de liquide. Cette température permet de calculer la hauteur du plafond nuageux.

import math

a=17.27
b=237.7

temperature=float(input("Température en °C  :  "))
humiditeRelative=float(input("Thumidité en%  entre 0 et 100  : "))

alpha=((a*temperature)/(b+temperature) +math.log(humiditeRelative/ 100))
tpreRosee = (b* alpha) / (a-alpha)
plafondNuage = 125 * (temperature -tpreRosee)

print("température de rosée = ",tpreRosee,"°C")
print("plafond Nuageux  = ",plafondNuage,"m")

2) Amélioration du calcul avec une fonction.

import math

a=17.27
b=237.7

def plafondNuageux(tpre,tH):

  alpha=((a*tpre)/(b+tpre) +math.log(tH / 100))
  t_rosee = (b* alpha) / (a-alpha)
  plafondNuage = 125 * (tpre -t_rosee)
  return t_rosee,plafondNuage

tpreRosee,plafondNuage=plafondNuageux(20,50)

print("température de rosée = ",tpreRosee,"°C")
print("plafond Nuageux  = ",plafondNuage,"m")

3) On précise les types des arguments de la fonction et de la donnée retournée.

import math

a=17.27
b=237.7

def plafondNuageux(tpre:float,tH:float)->tuple:

  alpha=((a*tpre)/(b+tpre) +math.log(tH / 100))
  t_rosee = (b* alpha) / (a-alpha)
  plafondNuage = 125 * (tpre -t_rosee)
  return t_rosee,plafondNuage

tpreRosee,plafondNuage=plafondNuageux(20,50)

print("température de rosée = ",tpreRosee,"°C")
print("plafond Nuageux  = ",plafondNuage,"m")

4) On documente la fonction.

import math

a=17.27
b=237.7

def plafondNuageux(tpre:float,tH:float)->tuple:
  """
  La temperature doit être en °C et tH. l'humidité relative est comprise entre 0 et 100
  la fonction renvoi un tuple contenant la temperature de rosée puis le plafond nuageux.
  """

  alpha=((a*tpre)/(b+tpre) +math.log(tH / 100))
  t_rosee = (b* alpha) / (a-alpha)
  plafondNuage = 125 * (tpre -t_rosee)
  return t_rosee,plafondNuage

tpreRosee,plafondNuage=plafondNuageux(15,0.01)

print("température de rosée = ",tpreRosee,"°C")
print("plafond Nuageux  = ",plafondNuage,"m")

5) Assertion : on demande au programme de tester des pré-conditions avant d’exécuter la fonction. lorsque la condition n’est pas vérifiée une erreur est déclenchée avec un message.

import math

a=17.27
b=237.7

def plafondNuageux(tpre:float,tH:float)->tuple:
  """
  La temperature doit être en °C et tH. l'humidité relative est comprise entre 0 et 100
  la fonction renvoi un tuple contenant la temperature de rosée puis le plafond nuageux.
  """
  assert tH>0 and tH<=100, 'th doit être >0 et <=100'
  assert type(tpre)==float or type(tpre)==int, ' la temperature est un entier ou un décimal'
  assert type(tH)==float or type (tH)==int , " le taux d'humidité est un entier ou un décimal"

  alpha=((a*tpre)/(b+tpre) +math.log(tH / 100))
  t_rosee = (b* alpha) / (a-alpha)
  plafondNuage = 125 * (tpre -t_rosee)
  return t_rosee,plafondNuage

tpreRosee,plafondNuage=plafondNuageux(0,1)

print("température de rosée = ",tpreRosee,"°C")
print("plafond Nuageux  = ",plafondNuage,"m")

En deuxième, nous allons créer une page web permettant d’effectuer le calcul demandé. Nous allons créer le code HTML de la page web à l’aide du code python, en y ajoutant le langage JavaScript.

<html lang="fr">

<head>
    <title>Nuages</title>
    <meta charset="UTF-8" />
    <link rel=" stylesheet" href="nuages.css" />
</head>
<script>
    function affiche() {
        var temperature =parseFloat(prompt('température en°C?'));
        var humiditeR =parseFloat(prompt('humidité relative en %?'));
        var a = 17.27;
        var b = 237.7;
        var meteo=""
        var alpha = a * temperature / (b + temperature) + Math.log(humiditeR * 0.01);
        var pointRosee = b * alpha / (a - alpha);
        var plafondNuage = 125 * (temperature - pointRosee)
        var plafondNuageFt =400*(temperature - pointRosee)
        if(isNaN(plafondNuage)||humiditeR>100||humiditeR<0||isNaN(humiditeR)){meteo="erreur"}
        else{
        meteo = "Le point de rosée est égal à " + pointRosee.toFixed(0) + "°C " +"et la base des nuages est à " + plafondNuage.toFixed(0) + "m .";
        meteo = meteo + "<br><b>soit " + plafondNuageFt.toFixed(0) + " ft .</b>";
        }
        document.getElementById("test").innerHTML = "<b>" + meteo + "</b>";
           }
</script>
<body>
    <h2>Hauteur du plafond nuageux</h2><br>
    <button class="button" onclick="affiche()">Calculateur</button><br><br>
    <h4 id="test"></h4>
    </body>

</html>

Aucune réponse

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *