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 milieu
while 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.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 infinie
Que se passe-t-il si on appelle test_sur_soi
sur elle-même: test_sur_soi(test_sur_soi)
?