7B: Maths

La leçon 7 est composée de trois parties, A, B, C qui peuvent être complétées dans n'importe quel ordre.

Jusqu'à présent, nous avons fait des calculs mathématiques en utilisant les opérateurs Python  +,  -, */ et les fonctions max et min. Dans cette leçon, nous allons voir d'autres opérateurs et fonction et apprendre comment faire des calculs plus complexes.

Opérateurs Mathématiques

Nous avons déjà vu les opérateurs pour l'addition (a + b), la soustraction (a - b), la multiplication (a * b) et la division (a / b). Nous allons maintenant voir trois opérateurs supplémentaires:

  • L'opérateur exponentiel a ** b calcule ab (a multiplié par lui-même b fois). Par exemple, 2 ** 3 donne 8 (2×2×2).
  • L'opérateur division entière a // b calcule le "quotient" de a divisé par b et ignore le reste. Par exemple, 14 // 3 donne 4.
  • L'opérateur modulo (ou reste) a % b calcule le reste de la division de a par b. Par exemple, 14 % 3 donne 2.

Exemple
Les exposants exponentiel, division entière et modulo

Exercice de code : Eggsactement
Les cartons d'oeufs contiennent exactement 12 oeufs. Ecrivez un programme qui lit un nombre d'oeufs en entrée avec input() et affiche deux nombres: combien de cartons peuvent être remplis avec ces oeufs et combien d'oeufs resteront. Par exemple, avec 27 oeufs, le résultat sera

2
3
puisque 27 oeufs remplissent 2 cartons et qu'il reste 3 oeuf. Indice

Vous pouvez entrer des données pour le programme dans la boîte ci-dessous.

L'opérateur modulo peut être utilisé pour de nombreuses tâches. On peut l'utiliser pour répondre à des questions comme:

Vérifier les années bissextile est un exemple de test de divisibilité; dans le prochain exercice, nous vous demandons d'écrire un programme qui implémente un test de divisibilité en général.

Exercice de code : Divisibilité
Ecrivez un programme qui lit deux nombres positif a et b sur deux lignes séparées. Si a est divisible par b, écrivez le message "divisible". Sinon, écrivez le message "non divisible". Par exemple, si les entrées sont

14
3
le programme écrira "non divisible". Indice
Vous pouvez entrer des données pour le programme dans la boîte ci-dessous.

Fonctions Mathématiques

Python peut calculer la plupart des fonctions mathématiques que l'on trouve sur une calculatrice scientifique:

  • sqrt(x) calcule la recine carrée de x.
  • exp(x) et log(x) sont les fonctions exponentielles et logarithme naturel.
  • sin(x), cos(x), tan(x) et les autres fonctions trigonométriques sont disponibles.
  • pi, la constante mathématique 3.1415...,  est également inclue.

Quand Python utilise les fonctions trigonométriques, l'angle x doit être exprimé en radians, pas en degrés.

Python propose un grand nombre de fonctions qui sont organisées en groupes appelés modules. Les fonctions ci-dessus appartienne au module math. Avant de pouvoir utiliser un module, il faut l'importer comme indiqué dans l'exemple ci-dessous. Pour utiliser une fonction d'un module, vous devez taper le nom du module, suivi d'un point puis le nom de la fonction.

Exemple
Utiliser les fonctions du module math

Exercice de code : Pizzas Rondes
Vos amis ont mangé leurs pizzas carrés et commande maintenant des pizzas rondes. Ecrivez un programme qui calcule la surface de cette pizza ronde. L'entrée est un float r, qui représente le rayon en cm. La sortie doit être la surface en cm2, calculée en utilisant la formule  A=pi*r2. Utilisez la constante Python pi au lieu de taper 3.1415...
Vous pouvez entrer des données pour le programme dans la boîte ci-dessous.

Exercice de code : Moyenne Géométrique
La moyenne géométrique de deux nombres a et b est le nombre

\sqrt{ab}

(C'est utilisé pour comparer les proportions d'écrans et pour décrire le taux de croissance moyen d'une population.) Ecrivez un programme qui lit deux float positif de l'entrée et affiche leur moyenne géométrique.
Exemple: Si l'entrée est

5.0
20.0
la sortie doit être 10.0.
Vous pouvez entrer des données pour le programme dans la boîte ci-dessous.

Mettre tout ensemble

Comme vous l'avez vu dans l'exercice précédent, vous pouvez construire des expressions mathématiques en combinant des opérateurs. Python évalue les opérateurs en utilisant la "priorité des opérations" que vous avez vu en cours de maths:

Parenthèses d'abord, ensuite Exposants, puis Division et Multiplication, et enfin Addition et Soustractions,

dont on peut se souvenir avec l'acronyme "PEDMAS". La division entière et le modulo appartiennent à la catégorie "Division et Multiplication". Par exemple, l'expression

3 * (1 + 2) ** 2 % 4
est évaluée en calculant l'addition entre paranthèses (1+2 = 3), puis l'exposant (3 ** 2 = 9) , puis la multiplication (3 * 9 = 27), et enfin le modulo, qui donne le résultat final de 27 % 4 = 3.

Exercice à réponse courte : Ordre des Opérations
Calculer la valeur de l'expression Python

6 - 52 // 5 ** 2
Correct !

Division entière de nombres négatifs: Les expressions a // b et int(a / b) sont les mêmes quand a et b sont positifs. Par contre, quand a est negatif, a // b utilise "l'arrondi au plus grand entier inférieur" et int(a / b) utilise "l'abaissement à zàro ou troncature."

Exemple
Division entière avec un nombre négatif

Entiers et Nombres à Virgule

Le résultat d'une expression mathématique est un nombre. Comme nous l'avons vu auparavant, chaque nombre est stocké avec comme deux types possibles:  int ou float. Le type int représente les entiers, positifs et negatifs, qui peuvent être aussi grands que vous le souhaitez.

Python n'accepte pas les nombres écrits sous la forme 1 000 000 ou 1,000,000. Tapez 1000000 à la place.

Le type float représente les nombres décimaux. De la même manière qu'une calculatrice stocke 1/3 sous la forme de sa valeur approchée 0.33333333, Python stocke également les nombres décimaux sous la forme de leur valeur approchée.

Comme Python utilise des valeurs approchées, certaines équations qui sont mathématiquement vraies ne le seront peut être pas en Python.
Exemple
Exemple
Il est donc important pour cette raison de garder une certaine tolérance pour ces approximations lorsque l'on compare des valeurs de type float. Par exemple, pour le "grader" interne utilisé pour ce site web, chaque sortie de type float est considérée comme correcte si elle est approximativement égale à la réponse attendue.

Nous terminons avec quelques exercices.

Exercice de code : Question Test de Compétence
Comme "question de test de compétence", on vous donne 3 entiers et on vous demande d'additionner les deux premiers nombres et de multiplier le résultat par le troisième. Ecrivez un programme qui lit les trois nombres et affiche le résultat correct. Indice
Vous pouvez entrer des données pour le programme dans la boîte ci-dessous.

Exercice de code : Un Exploit avec les Pieds
Pour ce programme, l'entrée est un nombre à virgule qui représente la taille mesurée en pieds. Ecrivez un programme qui va afficher la taille équivalente en centimètres en utilisant la formule de convertion 1 pied = 30.48 cm. Par exemple, si l'entrée est 0.5, le résultat sera 15.24.
Vous pouvez entrer des données pour le programme dans la boîte ci-dessous.

Exercice de code : Gravité
Un paquet est lancé vers le bas à la vitesse de v m/s depuis un avion à l'altitude de 11000 m. La distance de l'objet par rapport au sol est donnée par la formule -4.9t2 - vt + 11000, où t est le temps en secondes depuis que l'objet a été lancé. Ecrivez un programme qui calcule combien de temps il faudra à l'objet pour atteindre le sol. L'entrée de votre programme sera le nombre à virgule v. Vous aurez besoin de la formule de résolution d'un polynôme du second degré

\displaystyle{t=\frac{v-\sqrt{v^2-4(-4.9)(11000)}}{2(-4.9)}}

Vous pouvez entrer des données pour le programme dans la boîte ci-dessous.

Félicitations! Après avoir complétés ces exercices, vous êtes prêt pour la prochaine leçon.