Inscription / Connexion Nouveau Sujet
Niveau algorithmique
Partager :

while en python

Posté par
kalliste
29-11-20 à 11:55

Bonjour,

J'aimerais comprendre pourquoi, lorsque j'écris:

n=0
u=15*n**2-2*n+1
while u<500:
n=n+1
u=15*n**2-2*n+1
print(n,u)

j'obtiens  : 14,57,130,233,366, ET 529
Ce dernier terme dépasse 500 alors que je demande u<500.

Merci de vos explications.

**forum modifié**

Posté par
carita
re : while en python 29-11-20 à 12:06

bonjour kalliste

parce que lorsque l'on rentre dans la dernière boucle,
u est encore (à ce moment-là) inférieur à 500
donc la boucle s'exécute quand même.

Posté par
carita
re : while en python 29-11-20 à 12:24

par ailleurs (c'est peut-être volontaire), le 1er terme est calculé mais ne s'affiche pas:
pour n= 0, u=1 ne sort pas en affichage

si l'on souhaite avoir 1, 14, 57... il faudrait inverser les lignes ainsi :
n=0
while u<500:
u=15*n**2-2*n+1
print(n,u)  
n=n+1

Posté par
carita
re : while en python 29-11-20 à 12:28

... avec la bonne indentation, bien sûr...

Posté par
mathafou Moderateur
re : while en python 30-11-20 à 10:39

Bonjour
l'indentation du programme d'origine est peut être même :

n=0
u=15*n**2-2*n+1
while u<500:
    n=n+1
    u=15*n**2-2*n+1
print(n,u)


on n'affiche que le dernier (le premier qui est ≥ 500)
et pas

n=0
u=15*n**2-2*n+1
while u<500:
    n=n+1
    u=15*n**2-2*n+1
    print(n,u)

on les affiche tous à partir de U1 (U0 pas affiché)

et surtout encore moins

n=0
u=15*n**2-2*n+1
while u<500:
n=n+1
u=15*n**2-2*n+1
print(n,u)


(ce qu'a donné ici kalliste) qui boucle éternellement sur un while qui ne fait rien n=n+1 etc étant en dehors de la boucle avec une telle absence d'indentation !!

le respect de l'indentation est absolument fondamental en Python.
et c'est le seul moyen quand on donne un programme de savoir ce qui est dans et en dehors des boucles.

Répondre à ce sujet

Seuls les membres peuvent poster sur le forum !

Vous devez être connecté pour poster :

Connexion / Inscription Poster un nouveau sujet
Une question ?
Besoin d'aide ?
(Gratuit)
Un modérateur est susceptible de supprimer toute contribution qui ne serait pas en relation avec le thème de discussion abordé, la ligne éditoriale du site, ou qui serait contraire à la loi.


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

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 !