Parcours
/
Python
Python
/
Exercices
/
Facture d'électricité
Facture d'électricité

Facture d'électricité

Exercice d'apprentissage

Introduction

Python propose trois types de nombres intégrés : les entiers (int), les nombres à virgule flottante (float) et les nombres complexes (complex). Les fractions (fractions.Fraction) et les nombres décimaux (decimal.Decimal) sont également disponibles en les important depuis la bibliothèque standard.

Les nombres entiers, y compris sous forme hexadécimale (hex()), octale (oct()) et binaire (bin()), sans point décimal, sont eux aussi identifiés comme des ints :

# Ints are whole numbers.
>>> 1234
1234
>>> type(1234)
<class 'int'>

>>> -12
-12

Les nombres contenant un point décimal (avec ou sans partie fractionnaire) sont identifiés comme des floats :

>>> 3.45
3.45
>>> type(3.45)
<class 'float'>

Arithmétique

Python prend entièrement en charge l'arithmétique entre ces différents types de nombres et convertit les nombres plus étroits pour les aligner sur leurs équivalents plus larges lorsqu'on utilise les opérateurs arithmétiques binaires (+, -, *, /, // et %).

Addition et soustraction

Les opérateurs d'addition et de soustraction se comportent comme en mathématiques habituelles. Si l'un des opérandes au moins est un float, les int restants sont eux aussi convertis en float :

>>> 5 - 3
2
# The int is widened to a float here, and a float is returned.
>>> 3 + 4.0
7.0

Multiplication

Comme pour l'addition et la soustraction, la multiplication convertit les nombres plus étroits pour les aligner sur leurs équivalents plus larges :

>>> 3 * 2
6

>>> 3 * 2.0
6.0

Division

La division renvoie toujours un float, même si le résultat est un nombre entier :

>>> 6/5
1.2

>>> 6/2
3.0

Division entière

Si tu as besoin d'un résultat de type int, tu peux utiliser la division entière pour tronquer le résultat. La division entière s'effectue avec l'opérateur // :

>>> 6//5
1

>>> 6//2
3

Modulo

L'opérateur modulo (%) renvoie le reste de la division des deux opérandes :

# The result of % is zero here, because dividing 8 by 2 leaves no remainder
>>> 8 % 2
0

# The result of % is 2 here, because 3 only goes into 5 once, with 2 leftover
>>> 5 % 3
2

Une autre façon de voir 5 % 3 :

>>> whole_part = int(5/3)
1

>>> decimal_part = 5/3 - whole_part
0.6666666666666667

>>> whole_remainder = decimal_part * 3
2.0

Arrondis

Python fournit une fonction intégrée round(number, <decimal_places>) pour arrondir un nombre à virgule flottante à un nombre donné de décimales. Si aucun nombre de décimales n'est précisé, le nombre est arrondi à l'entier le plus proche et un int est renvoyé :

>>> round(3.1415926535, 2)
3.14

>>> round(3.1415926535)
3

Priorité et parenthèses

Python permet d'utiliser des parenthèses pour regrouper des expressions. C'est utile lorsque tu veux modifier l'ordre des opérations par défaut.

>>> 2 + 3 * 4
14

>>> (2 + 3) * 4
20

Python suit la règle PEMDAS pour la priorité des opérateurs. Cela signifie que les calculs entre () ont la priorité la plus élevée, suivis de **, puis *, /, //, %, + et - :

>>> 2 + 3 - 4 * 4
-11

>>> (2 + 3 - 4) * 4
4

# In the following example, the `**` operator has the highest priority, then `*`, then `+`
# Meaning we first do 4 ** 4, then 3 * 64, then 2 + 192
>>> 2 + 3 * 4 ** 4
770

Précision et représentation

Les entiers en Python ont une précision arbitraire : le nombre de chiffres n'est limité que par la mémoire disponible du système hôte.

Les nombres à virgule flottante sont généralement implémentés à l'aide d'un double en C (15 décimales de précision), mais leur représentation varie selon le système hôte. Les nombres complexes ont une partie real et une partie imaginary, toutes deux représentées par des nombres à virgule flottante.

Pour une discussion plus détaillée des problèmes et des limites de l'arithmétique à virgule flottante selon les langages de programmation, jette un œil à 0.30000000000000004.com et au tutoriel Python.

Instructions

L'entreprise pour laquelle tu travailles veut réduire son empreinte carbone et te demande donc d'écrire un programme qui calcule la consommation d'énergie et le coût de fonctionnement de ses appareils électroniques.

1. Récupère les heures supplémentaires

Ton employeur dispose d'un programme qui calcule le temps nécessaire pour faire fonctionner différents appareils électroniques. Pour l'instant, ce temps est stocké en heures. Quand ton employeur a additionné les heures, il a remarqué que la durée n'était pas correcte. Il veut que tu ajoutes 3 heures supplémentaires aux données de temps. Il aimerait aussi savoir combien d'heures « supplémentaires » il reste après avoir converti les données en jours « complets » (un jour compte 24 heures). Il se peut que la durée à convertir ne corresponde pas à des jours complets.

Implémente une fonction get_extra_hours() qui prend un entier contenant le nombre d'heures. La fonction doit effectuer l'ajustement « heures supplémentaires » qui convient, puis return un entier représentant le nombre d'heures à retirer du total pour obtenir la durée en jours « complets ».

>>> get_extra_hours(25)
4

2. Récupère la valeur en kW

Ton employeur veut connaître la consommation d'énergie des différents appareils électroniques en kW. kW signifie kilowatt, le watt étant une unité de puissance. Dans le nom de l'unité, kilo est un préfixe du système métrique qui signifie 1000. Un kilowatt correspond à 1000 watts.

Implémente une fonction get_kW_value() qui prend un entier contenant le nombre de watts. La fonction doit ensuite return les watts convertis en kilowatts, arrondis à 1 chiffre après la virgule.

>>> get_kW_value(1150)
1.2

3. Récupère la valeur en kWh

Pour pouvoir calculer le coût de fonctionnement des appareils électroniques, ton employeur a besoin de connaître la consommation d'énergie en kWh. kWh signifie kilowatt-heure, où l'heure est une unité de temps. Un kilowatt-heure correspond à 1000 watts utilisés pendant 1 heure. Une heure est composée de 60 minutes et une minute de 60 secondes. Une heure est égale à 3600 secondes. Pour calculer la valeur en kWh, il faut convertir les watts en kW, puis effectuer une division entière du résultat par 3600.

Implémente une fonction get_kWh_value() qui prend un entier contenant le nombre de watts. La fonction doit ensuite return la valeur en kilowatts-heures sous la forme d'un entier.

>>> get_kWh_value(5000000)
1

4. Récupère le rendement

Les appareils électroniques n'ont pas un rendement de 100 %. C'est pourquoi ton employeur veut que tu calcules le rendement des appareils. Pour obtenir le rendement, tu dois diviser le facteur de puissance (un nombre décimal entre 0 et 100) par 100.

Implémente une fonction get_efficiency() qui prend un nombre décimal contenant le facteur de puissance. La fonction doit ensuite return le rendement calculé sous la forme d'un nombre décimal.

>>> get_efficiency(80)
0.8

5. Récupère le coût

Ton employeur veut connaître le coût de fonctionnement des appareils électroniques. Ce coût est égal à la puissance utilisée multipliée par le coût par kWh. La puissance utilisée est la puissance donnée divisée par le rendement calculé.

Implémente une fonction get_cost(<watts>,<power_factor>,<price>) qui prend un entier contenant le nombre de watts, un nombre décimal contenant le facteur de puissance et un nombre décimal contenant le coût par kWh. La fonction doit ensuite return le coût de fonctionnement des appareils électroniques sous la forme d'un nombre décimal.

>>> get_cost(5000000, 80, 0.25)
0.3125
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
Python Exercism

Prêt à commencer Facture d'électricité ?

Inscris-toi sur Exercism pour apprendre et maîtriser Python avec 17 concepts146 exercices, et un vrai mentorat humain, le tout gratuitement.