Attention ! Cet interpréteur n’est pas totalement compatible avec Python3.
"""Exercices sur les fonctions pures.
À noter: il est toujours possible de rajouter des tests.
Voir:
http://profgra.org/lycee/presentation_doctests.html
http://profgra.org/lycee/BTS-SIO1-U22-03_Fonctions_pures.html
"""
# Avec une seule variable.
def doubler(x):
"""Retourne le double du nombre.
>>> doubler(2)
4
"""
pass
def mettre_au_carre(x):
"""Retourne le carré du nombre.
>>> mettre_au_carre(2)
4
"""
pass
def valeur_absolue(x):
"""Retourne la valeur absolue du nombre.
>>> valeur_absolue(3)
3
>>> valeur_absolue(-4)
4
"""
pass
def pair(x):
"""Retourne True si le nombre est pair, False sinon.
>>> pair(2)
True
>>> pair(3)
False
"""
pass
def impair(x):
"""Retourne True si le nombre est impair, False sinon.
>>> impair(2)
False
>>> impair(3)
True
"""
pass
def impair_2(x):
"""Idem, mais se sert de la fonction `pair` ci-dessus.
>>> impair_2(2)
False
>>> impair_2(3)
True
"""
pass
def positif_ou_nul(x):
"""Retourne True si le nombre est positif ou nul.
>>> positif_ou_nul(3)
True
>>> positif_ou_nul(0)
True
>>> positif_ou_nul(-2)
False
"""
pass
def strictement_positif(x):
"""Retourne True si le nombre est positif strictement.
>>> strictement_positif(3)
True
>>> strictement_positif(0)
False
>>> strictement_positif(-2)
False
"""
pass
# Avec deux variables.
def somme_2(x, y):
"""Addition de deux nombres.
>>> somme_2(2, 2)
4
"""
pass
def produit_2(x, y):
"""Multiplication de deux nombres.
>>> produit_2(2, 2)
4
"""
pass
def difference(x, y):
"""Différence de deux nombres.
>>> difference(2, 2)
0
"""
pass
def quotient(x, y):
"""Quotient de deux nombres.
>>> quotient(2, 2)
1.0
"""
pass
def quotient_2(x, y):
"""Quotient entier de deux nombres, à calculer sans / ni //.
>>> quotient_2(2, 2)
1
"""
pass
def reste(x, y):
"""Reste de la division entière entre deux nombres.
>>> reste(5, 2)
1
"""
pass
def reste_2(x, y):
"""Reste de la division entière entre deux nombres, sans utiliser %.
>>> reste_2(5, 2)
1
"""
pass
def moyenne(x, y):
"""Moyenne de deux nombres.
>>> moyenne(18, 19)
18.5
"""
pass
def maxi(x, y):
"""Le plus grand des deux.
>>> maxi(0, 1)
1
"""
pass
def mini(x, y):
"""Le plus petit des deux.
>>> mini(0, 1)
0
"""
pass
def compare(x, y):
"""Compare deux nombres.
Retourne le signe de la différence entre le premier argument et le second:
* 0 s'ils sont égaux,
* -1 ou 1 sinon.
>>> compare(3, 3)
0
>>> compare(2, 3)
-1
>>> compare(3, 2)
1
"""
pass
def divisible(x, y):
"""Retourne True si x est divisible par y, False sinon.
>>> divisible(5, 2)
False
"""
pass
def divisible_2(x, y):
"""Retourne True si x est divisible par y, False sinon. Autre méthode.
>>> divisible(5, 2)
False
>>> divisible(6, 2)
False
"""
pass
# Avec des listes.
# Vous aurez peut-être besoin des fonctions:
# * len <http://docs.python.org/3.2/library/functions.html#len> ou
# * range <http://docs.python.org/3.2/library/functions.html#range>
# qui prend tout son sens ici.
def somme(liste):
"""
>>> somme([1, 2, 3])
6
"""
pass
def produit(liste):
"""
>>>
"""
pass
def moyenne(liste):
"""
>>>
"""
pass
def maxi(liste):
"""
>>>
"""
pass
def mini(liste):
"""
>>>
"""
pass
def tous_positifs(liste):
"""
>>>
"""
pass
def au_moins_un_positif(liste):
"""
>>>
"""
pass
# Ne pas modifier à partir d’ici.
import sys
import inspect
import doctest
funcs = [elt[1] for elt in inspect.getmembers(sys.modules[__name__],
inspect.isfunction)]
ordered_funcs = sorted(funcs, key=lambda f: -f.__code__.co_firstlineno)
for f in ordered_funcs:
doctest.run_docstring_examples(f, None, optionflags=doctest.REPORT_ONLY_FIRST_FAILURE)