On définit ci-dessous une fonction racine_carrée.
def racine_carrée(n, precision=1E-2):
"""Recherche d'une racine carrée par une méthode dichotomique
Paramètres
----------
n: float
le nombre dont on recherche la racine
precision: float 0.01 par défaut
precision du calcul du carré
Returns
-------
float
la racine carrée de n
"""
gauche, droite, milieu = 0, n, n
while abs(milieu ** 2 - n) > precision :
milieu = (gauche + droite) / 2
if milieu ** 2 - n > 0:
droite = milieu - precision
else:
gauche = milieu + precision
return milieuwhile abs(milieu ** 2 - n) > precision :Implémenter en Python deux fonctions :
est_pair(n): Renvoie True si le nombre entier est pair,
False sinon.est_premier(n): Renvoie True si le nombre entier est
premier, False sinon.Tester ces fonctions avec des petites entrées, puis avec des grandes pour voir si ces algorithmes seraient utilisables en pratique.
Supposons qu'il existe une fonction calculable
termine(fonction, données) qui prend 2 arguments :
et qui renverra True si le programme termine et False s'il entre
dans une boucle infinie.
On définit les deux fonctions suivantes :
def fonction1(n):
if n % 3 != 0:
return True
else:
return False
def fonction2(n):
while n % 3 != 0:
print("True")
print("False")Que renverront les appels suivants ?
termine(function1, 7)
termine(function1, 9)
termine(function2, 7)
termine(function2, 9)Justifier vos réponses.
On définit une fonction test_sur_soi.
def test_sur_soi(programme):
if termine(programme, programme):
while True: pass # boucle infinieQue se passe-t-il si on appelle test_sur_soi sur elle-même:
test_sur_soi(test_sur_soi) ?