from math import*
a=eval(input("a="))
b=eval(input("b="))
a=1
b=2
while (b-a >0.01):
m=((a+b)/2)
if m^2-1 <sqrt(m):
a=m
print(a)
else:
b=m
print(b)
Voila quand je met l'algo en route il me donne une boucle sans fin ! comment faire svp ?
MERCI d'avance.
*** message déplacé ***
anthh peut-il créer son propre topic et ne pas polluer celui des autres ? merci
*** message déplacé ***
il y a un gros bouton "Nouveau Topic" qui te tend les bras en haut de cette page
*** message déplacé ***
from math import*
a=eval(input("a="))
b=eval(input("b="))
a=1
b=2
while (b-a >0.01):
m=((a+b)/2)
print(m)
if m^2-1 <sqrt(m):
a=m
print(a)
else:
b=m
print(b)
vois là l'algorithme, quand je le lance il me fait une boucle sans fin.
Comment faire svp.
Merci d'avance
Bonjour,
L'indentation en Python est significative. Le langage ne possédant pas de symboles début/fin (begin/end, {/}, etc), c'est le seul moyen pour l'analyseur syntaxique de savoir où commencent et finissent les structures de contrôle (while, if, etc).
Dans le cas présent, s'il s'avère que, dès le début, b-a > 0.01, on entre dans la boucle while. Or cette boucle se limite aux lignes suivantes, car ce sont les seules à être indentées plus que le while :
while (b-a > 0.01):
m=((a+b)/2)
print(m)
Cette boucle ne modifiant ni a ni b, la condition est invariante et le programme y boucle à l'infini.
Les lignes suivantes du programme doivent être bien indentées pour être executées à chaque tour de boucle :
while (b-a > 0.01):
m=((a+b)/2)
print(m)
if m^2-1 < sqrt(m):
a=m
print(a)
else:
b=m
print(b)
Bonsoir
Ton indentation est mauvaise. Le if/else doit être à l'intérieur du while, et donc indenté au niveau suivant. Autre chose, en Python, l'exponentiation se fait avec ** ou la fonction pow, donc au lieu de m^2 il te faut m**2 ou pow(m, 2).
from math import*
a=eval(input("a="))
b=eval(input("b="))
a=1
b=2
while (b-a >0.01):
m=((a+b)/2)
print(m)
if m**2-1 <sqrt(m):
a=m
print(a)
else:
b=m
print(b)
Python 3.2.1 (default, Jul 10 2011, 21:51:15) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
a=1
b=2
1.5
1.5
1.25
1.25
1.375
1.375
1.4375
1.4375
1.46875
1.46875
1.484375
1.484375
1.4921875
1.4921875
>>> je trouve ca avec se que tu ma donner donc c sa.
juste pour savoir je dois faire fonctioner cette algo : effectuer 4 itérations et noter a et b ? cela veut dire Quoi SVP.
joyeux fêtes et bonne année en passant.
from math import*
a=eval(input("a="))
b=eval(input("b="))
a=1
b=2
while (b-a >0.01):
m=((a+b)/2)
print("m=",m)
if m**2-1 <sqrt(m):
a=m
else:
b=m
print("a=",a)
print("b=",b)
Python 3.2.1 (default, Jul 10 2011, 21:51:15) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> ================================ RESTART ================================
>>>
a=1
b=2
m= 1.5
a= 1
b= 1.5
m= 1.25
m= 1.375
m= 1.4375
m= 1.46875
m= 1.484375
m= 1.4921875
a= 1.484375
b= 1.4921875
>>>
vois la et la question : effectuer 4 itérations et noter les valeurs successives de a et b . et je comprends pas Besoin d'aide svp.....
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :