Aller au contenu

Fonctions⚓︎

Fonction 0⚓︎

Complétez la fonction suivante, sachant qu'elle traduit l'expression mathématique

\[f(x) = 4x + 7\]
###
# testsbksl-nlbksl-nlassert f(0) == 7bksl-nlassert f(1) == 11bksl-nlbksl-nlbksl-nl# autres testsbksl-nlbksl-nlfor x in range(-10, 20):bksl-nl attendu = 4 py-str x + 7bksl-nl assert f(x) == attendu, f"Erreur avec {x=}"bksl-nlbksl-nl 5/5

def f(x):bksl-nl y = ... # ligne à modifierbksl-nl return ybksl-nlbksl-nlbksl-nl# testsbksl-nlbksl-nlassert f(0) == 7bksl-nlassert f(1) == 11bksl-nlbksl-nldef f(x):bksl-nl y = 4 py-str x + 7bksl-nl return ybksl-nlbksl-nl

A

Z


Fonction 1⚓︎

Vous devez créer une fonction qui prend en paramètre un nombre \(x\) et qui renvoie \(5x-3\).

###
# testsbksl-nlbksl-nlassert f(0) == -3bksl-nlassert f(1) == 2bksl-nlbksl-nlbksl-nl# autres testsbksl-nlbksl-nlfor x in range(-10, 20):bksl-nl attendu = 5 py-str x - 3bksl-nl assert f(x) == attendu, f"Erreur avec {x=}"bksl-nlbksl-nl 5/5

def fbksl-nlbksl-nlbksl-nl# testsbksl-nlbksl-nlassert f(0) == -3bksl-nlassert f(1) == 2bksl-nlbksl-nldef f(x):bksl-nl return 5 py-str x - 3bksl-nlbksl-nl

A

Z


Fonction 2⚓︎

Complétez l'écriture de la fonction \(g\) qui prend en paramètre un nombre \(x\) et qui renvoie \((x+1)^2\).

###
# testsbksl-nlbksl-nlassert g(0) == 1bksl-nlassert g(1) == 4bksl-nlbksl-nlbksl-nl# autres testsbksl-nlbksl-nlfor x in range(-10, 20):bksl-nl attendu = (x + 1) py-strpy-str 2bksl-nl assert g(x) == attendu, f"Erreur avec {x=}"bksl-nlbksl-nl 5/5

def gbksl-nl return bksl-nlbksl-nlbksl-nl# testsbksl-nlbksl-nlassert g(0) == 1bksl-nlassert g(1) == 4bksl-nlbksl-nldef g(x):bksl-nl t = x + 1bksl-nl return t py-str tbksl-nlbksl-nl

A

Version recommandée !

Variantes⚓︎

On peut aussi écrire de plusieurs autres façons

🐍 Script Python
def g(x):
    return  (x + 1) ** 2

Avec l'opérateur puissance, c'est un peu plus lent

🐍 Script Python
def g(x):
    return  (x + 1) * (x + 1)

Avec le facteur calculé deux fois, puis multiplié, également plus lent

Z


Fonction 3⚓︎

Complétez la fonction suivante, sachant qu'elle traduit l'expression mathématique

\[f(x) = 5x^2 -3x + 1\]
###
# testsbksl-nlbksl-nlassert f(0) == 1bksl-nlassert f(1) == 3bksl-nlassert f(-1) == 9bksl-nlbksl-nlbksl-nl# autres testsbksl-nlbksl-nlfor x in range(-10, 20):bksl-nl attendu = (5 py-str x - 3) py-str x + 1bksl-nl assert f(x) == attendu, f"Erreur avec {x=}"bksl-nlbksl-nl 5/5

def f(x):bksl-nl y = ... # ligne à modifierbksl-nl return ybksl-nlbksl-nlbksl-nl# testsbksl-nlbksl-nlassert f(0) == 1bksl-nlassert f(1) == 3bksl-nlassert f(-1) == 9bksl-nlbksl-nldef f(x):bksl-nl y = 5 py-str x py-str x - 3 py-str x + 1bksl-nl return ybksl-nlbksl-nl

A

Variantes⚓︎

🐍 Script Python
def f(x):
    # avec l'opérateur puissance
    y = 5*x**2 - 3*x + 1
    return y

# ou

def f(x):
    # remarquez qu'il n'y a que deux multiplications !
    y = (5*x-3) * x  +  1
    return y

Z


Fonction 4⚓︎

Corrigez la fonction produit pour qu'elle prenne deux paramètres k et n, et renvoie leur produit.

###
# testsbksl-nlbksl-nlassert produit(2, 3) == 6bksl-nlassert produit(-5, 2) == -10bksl-nlbksl-nlbksl-nl# autres testsbksl-nlbksl-nlfor k in range(-10, 20):bksl-nl for n in range(-10, 20):bksl-nl attendu = k py-str nbksl-nl assert produit(k, n) == attendu, f"Erreur avec {k=} et {n=}"bksl-nlbksl-nl 5/5

# fonction à corrigerbksl-nldef produit(k):bksl-nl return k + kbksl-nlbksl-nlbksl-nl# testsbksl-nlbksl-nlassert produit(2, 3) == 6bksl-nlassert produit(-5, 2) == -10bksl-nlbksl-nldef produit(k, n):bksl-nl return k py-str nbksl-nlbksl-nl

A

Z


Fonction 5⚓︎

Aire d'un trapèze

Un trapèze est un quadrilatère non croisé ayant deux côtés parallèles ; ses bases. Son aire est égale à la moyenne des bases, multipliée par la hauteur associée.

\[\mathscr A_\text{trapèze} = \frac{b_1 + b_2}2 × h\]

Complétez la fonction aire_trapeze qui renvoie l'aire d'un trapèze.

Elle a pour paramètres :

  • base_1 : la longueur d'une base
  • base_2 : la longueur de l'autre base
  • hauteur : la hauteur associée
###
# testsbksl-nlbksl-nlassert airepy-undtrapeze(3, 1, 2) == 4 # Exemple 1bksl-nlassert airepy-undtrapeze(3, 5, 2) == 8 # Exemple 2bksl-nlassert airepy-undtrapeze(3, 3, 2) == 6 # Exemple 3bksl-nlbksl-nlbksl-nl# autres testsbksl-nlbksl-nlbksl-nldef sontpy-undproches(x, y):bksl-nl return abs(x - y) < 10py-strpy-str-9bksl-nlbksl-nlbksl-nlfor basepy-und1 in range(0, 20):bksl-nl for basepy-und2 in range(0, 20):bksl-nl for hauteur in range(20):bksl-nl attendu = (basepy-und1 + basepy-und2) py-str hauteur / 2bksl-nl assert sontpy-undproches(bksl-nl airepy-undtrapeze(basepy-und1, basepy-und2, hauteur), attendubksl-nl ), f"Erreur avec {basepy-und1=}, {basepy-und2=} et {hauteur=}"bksl-nlbksl-nl 5/5

def airepy-undtrapeze():bksl-nl ...bksl-nlbksl-nlbksl-nl# testsbksl-nlbksl-nlassert airepy-undtrapeze(3, 1, 2) == 4 # Exemple 1bksl-nlassert airepy-undtrapeze(3, 5, 2) == 8 # Exemple 2bksl-nlassert airepy-undtrapeze(3, 3, 2) == 6 # Exemple 3bksl-nlbksl-nldef airepy-undtrapeze(basepy-und1, basepy-und2, hauteur):bksl-nl return (basepy-und1 + basepy-und2) py-str hauteur / 2bksl-nlbksl-nl

A

Z

Exemples de trapèzes


Fonction 6⚓︎

Créez la fonction perimetre de paramètre L et l qui calcule et renvoie le périmètre du rectangle de longueur L et de largeur l.

###
# testsbksl-nlbksl-nlassert perimetre(2, 3) == 10bksl-nlassert perimetre(5, 2) == 14bksl-nlbksl-nlbksl-nl# autres testsbksl-nlbksl-nlfor l in range(20):bksl-nl for L in range(20):bksl-nl attendu = (L + l) py-str 2bksl-nl assert perimetre(L, l) == attendu, f"Erreur avec {L=} et {l=}"bksl-nlbksl-nl 5/5

# ... À créer icibksl-nlbksl-nlbksl-nl# testsbksl-nlbksl-nlassert perimetre(2, 3) == 10bksl-nlassert perimetre(5, 2) == 14bksl-nlbksl-nldef perimetre(L, l):bksl-nl y = (L + l) py-str 2bksl-nl return ybksl-nlbksl-nl

A

Z


Fonction 7⚓︎

Créez la fonction circonference de paramètre rayon qui renvoie le périmètre du cercle de rayon donné.

On définira la constante PI de valeur 3.1415926 dans le script.

###
# testsbksl-nlbksl-nlassert circonference(0) == 0bksl-nlassert circonference(1) == 6.2831852bksl-nlbksl-nlbksl-nl# autres testsbksl-nlbksl-nlbksl-nldef sontpy-undproches(x, y):bksl-nl return abs(x - y) < 10py-strpy-str-9bksl-nlbksl-nlbksl-nlfor r in range(20):bksl-nl attendu = 2 py-str 3.1415926 py-str rbksl-nl assert sontpy-undproches(circonference(r), attendu), f"Erreur avec {r=}"bksl-nlbksl-nl 5/5

# À créer icibksl-nlbksl-nlbksl-nl# testsbksl-nlbksl-nlassert circonference(0) == 0bksl-nlassert circonference(1) == 6.2831852bksl-nlbksl-nlPI = 3.1415926bksl-nlbksl-nlbksl-nldef circonference(r):bksl-nl y = 2 py-str PI py-str rbksl-nl return ybksl-nlbksl-nl

A

⚠ La réponse est simple, mais il faut évoquer un point

Pas d'égalité entre flottant

Dans les tests, nous avons écrit

🐍 Script Python
assert circonference(0) == 0
assert circonference(1) == 6.2831852

Cette méthode peut être source d'erreurs, il ne faut pas faire de tests d'égalité entre flottants.

On fait un test de nombres proches

🐍 Script Python
def sont_proches(x, y):
    return abs(x - y) < 10**-9

assert sont_proches(circonference(0), 0)
assert sont_proches(circonference(1), 6.2831852)

Voilà une bonne méthode.

Les tests cachés sur cet exercice utilisaient la fonction sont_proches !

Comme dans tous les exercices où interviennent des tests d'égalité entre flottants.

Z


Fonction 8⚓︎

Complétez la fonction Celsius_depuis_Fahrenheit qui permet de convertir une température donnée en degré Fahrenheit en une température en degré Celsius.

Aujourd'hui, l'échelle Fahrenheit est calée sur l'échelle Celsius par la relation :

\[T(°F) = \frac95 T(°C) + 32\]
###
# testsbksl-nlbksl-nlbksl-nldef sontpy-undproches(x, y):bksl-nl return abs(x - y) < 10py-strpy-str-9bksl-nlbksl-nlbksl-nlassert sontpy-undproches(Celsiuspy-unddepuispy-undFahrenheit(-40), -40)bksl-nlassert sontpy-undproches(Celsiuspy-unddepuispy-undFahrenheit(+32), 0)bksl-nlassert sontpy-undproches(Celsiuspy-unddepuispy-undFahrenheit(+50), 10)bksl-nlassert sontpy-undproches(Celsiuspy-unddepuispy-undFahrenheit(212), 100)bksl-nlbksl-nlbksl-nl# autres testsbksl-nlbksl-nlfor tpy-undfahrenheit in range(-10, 20):bksl-nl attendu = (tpy-undfahrenheit - 32) / 1.8bksl-nl assert sontpy-undproches(bksl-nl Celsiuspy-unddepuispy-undFahrenheit(tpy-undfahrenheit), attendubksl-nl ), f"Erreur avec {tpy-undfahrenheit=}"bksl-nlbksl-nl 5/5

def Celsiuspy-unddepuispy-undFahrenheit(tpy-undfahrenheit):bksl-nl tpy-undcelcius = ... # ligne à modifierbksl-nl return tpy-undcelciusbksl-nlbksl-nlbksl-nl# testsbksl-nlbksl-nlbksl-nldef sontpy-undproches(x, y):bksl-nl return abs(x - y) < 10py-strpy-str-9bksl-nlbksl-nlbksl-nlassert sontpy-undproches(Celsiuspy-unddepuispy-undFahrenheit(-40), -40)bksl-nlassert sontpy-undproches(Celsiuspy-unddepuispy-undFahrenheit(+32), 0)bksl-nlassert sontpy-undproches(Celsiuspy-unddepuispy-undFahrenheit(+50), 10)bksl-nlassert sontpy-undproches(Celsiuspy-unddepuispy-undFahrenheit(212), 100)bksl-nlbksl-nldef Celsiuspy-unddepuispy-undFahrenheit(tpy-undfahrenheit):bksl-nl tpy-undcelcius = (tpy-undfahrenheit - 32) py-str 5 / 9bksl-nl return tpy-undcelciusbksl-nlbksl-nl

A

Z


Fonction 9⚓︎

Un parc d'attractions affiche les tarifs suivants :

  • 8,50 € par enfant
  • 12,00 € par adulte

Vous devez écrire une fonction prix qui renvoie le prix total à payer, à partir du nombre n d'enfants et du nombre p d'adultes.

###
# testsbksl-nlbksl-nlassert prix(0, 0) == 0.0bksl-nlassert prix(1, 0) == 8.5bksl-nlassert prix(0, 1) == 12.0bksl-nlbksl-nlbksl-nl# autres testsbksl-nlbksl-nlbksl-nldef sontpy-undproches(x, y):bksl-nl return abs(x - y) < 10py-strpy-str-9bksl-nlbksl-nlbksl-nlfor n in range(20):bksl-nl for p in range(20):bksl-nl attendu = n py-str 8.5 + p py-str 12.0bksl-nl assert sontpy-undproches(prix(n, p), attendu), f"Erreur avec {n=} et {p=}"bksl-nlbksl-nl 5/5

def prix(n, p):bksl-nl y = ... # ligne à modifierbksl-nl return ybksl-nlbksl-nlbksl-nl# testsbksl-nlbksl-nlassert prix(0, 0) == 0.0bksl-nlassert prix(1, 0) == 8.5bksl-nlassert prix(0, 1) == 12.0bksl-nlbksl-nldef prix(n, p):bksl-nl y = n py-str 8.5 + p py-str 12.0bksl-nl return ybksl-nlbksl-nl

A

Z