Inscription / Connexion Nouveau Sujet
Posté par
anthh
aide en algorithme sur python 26-12-11 à 19:48

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é ***

Posté par
dhalte
re : Algorithme Suite de somme 26-12-11 à 19:50

anthh peut-il créer son propre topic et ne pas polluer celui des autres ? merci

*** message déplacé ***

Posté par
anthh
re : Algorithme Suite de somme 26-12-11 à 19:51

dsl je suis nouveau

*** message déplacé ***

Posté par
dhalte
re : Algorithme Suite de somme 26-12-11 à 19:53

il y a un gros bouton "Nouveau Topic" qui te tend les bras en haut de cette page

*** message déplacé ***

Niveau première
Partager :

problème sur python

Posté par
anthh
26-12-11 à 19:56

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

Posté par
anthh
re : problème sur python 26-12-11 à 20:41

j'ai besoin d'aide svp

Posté par
anthh
re : Algorithme Suite de somme 26-12-11 à 20:47

dhalte
stp peut tu m'aider ? c'est important

*** message déplacé ***

Posté par
azalee
re : problème sur python 26-12-11 à 20:56

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)

Posté par
Bachstelze
re : problème sur python 26-12-11 à 20:59

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)

Posté par
anthh
re : problème sur python 26-12-11 à 21:27

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.

Posté par
anthh
re : problème sur python 26-12-11 à 21:47

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.

Posté par
anthh
re : problème sur python 27-12-11 à 12:02

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.....

Posté par
anthh
re : problème sur python 27-12-11 à 12:19

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 :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !