Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

faire une boucle

18 réponses
Avatar
fred1599
Bonjour,

Un probl=E8me de boucle,

J'aimerais faire comme dans les machines a calculer avec la fonction
'lbl' et la fonction 'goto'

C'est surement possible mais je n'ai rien vu par rapport =E0 =E7a

10 réponses

1 2
Avatar
Bruno Desthuilliers
Bonjour,

Un problème de boucle,

J'aimerais faire comme dans les machines a calculer avec la fonction
'lbl' et la fonction 'goto'


s/fonction/instruction/g

C'est surement possible


Surement pas. Enfin, pas en Python, ni dans aucun langage de haut
niveau. Heureusement.

mais je n'ai rien vu par rapport à ça


Regarde du côté des exceptions et des générateurs.

Avatar
Laurent Pointal
wrote:

Bonjour,

Un problème de boucle,

J'aimerais faire comme dans les machines a calculer avec la fonction
'lbl' et la fonction 'goto'


<quirk: trois morts dans les lecteurs>

C'est surement possible mais je n'ai rien vu par rapport à ça


Pas de goto en Python, pas de goto dans la majeure partie des langages
récents. Tu peux faire des boucles via for ou while, il faut que tu
réorganise ton code dans ce sens - au besoin poste un petit bout de code et
on verra comment le restructurer.


A+

Laurent

PS. Pour le fun, il y a un "goto" Python ici: http://www.entrian.com/goto/

Avatar
Méta-MCI \(MVP\)
Bonsoir !


Je te conseille d'essayer le langage GOTO++
(http://gpp.niacland.net/presentation.html.fr)


@-salutations
--
Michel Claveau
Avatar
Laurent Pointal
wrote:

Bonjour,

Un problème de boucle,

J'aimerais faire comme dans les machines a calculer avec la fonction
'lbl' et la fonction 'goto'

C'est surement possible mais je n'ai rien vu par rapport à ça


Ah, j'oubliais une référence

"Go To Statement Considered Harmful"
par Edsger W. Dijkstra
http://www.acm.org/classics/oct95/

Avatar
Méta-MCI \(MVP\)
Extrait de la doc :

"Ensuite vient le GOTOGOTO..."
"le GOTOGOTO requiert, en plus du label, un pourcentage de
réussite qui va permettre de calculer la probabilité pour
que le GOTOGOTO vous envoie vraiment à cette étiquette"
Avatar
fred1599
Extrait de la doc :

"Ensuite vient le GOTOGOTO..."
"le GOTOGOTO requiert, en plus du label, un pourcentage de
réussite qui va permettre de calculer la probabilité pour
que le GOTOGOTO vous envoie vraiment à cette étiquette"


Bon je te passe un code exemple que je me suis amusé a faire pour
faire cette boucle

# _*_ coding:Utf-8 _*_

print 'voila un petit programme afin de calculer un pourcentage'

# Les chiffres dont on a besoin

a = float(raw_input('Donner la valeur de votre article :'))
b = float(raw_input('Donner la valeur de votre pourcentage :'))

if a > 0 and b > 0 :
c=((a*b)/100)
d= (a-c)
print 'vous avez demandé sur votre article d'une valeur de' , a ,
'euros, un pourcentage de' , b , '%, ce qui donne une valeur finale
pour votre article de :' , d
elif a < 0 and b > 0 :
print 'vous ne pouvez pas avoir une valeur négative!!! Recommencez le
programme'
elif a > 0 and b < 0 :
print 'votre pourcentage ne peut pas être négatif!!! Recommencez le
programme'
elif a < 0 and b < 0 :
print 'soyons logique, recommencez le programme'

raw_input()


Voila, maintenant, une fois que j'appuis sur une nouvelle touche,
j'aimerais que le programme revienne au point de départ en me
redemendant la valeur a et la valeur b

Merci par avance

Avatar
Franssoa
Je te conseille d'essayer le langage GOTO++
(http://gpp.niacland.net/presentation.html.fr)
Mais c'est très bon ça ! Domage, ça ne fonctionne pas sur windows 95,

sinon... hum...

François

Avatar
jean-michel bain-cornu
Bonjour,
J'aimerais faire comme dans les machines a calculer avec la fonction
'lbl' et la fonction 'goto'


Il y a quelques temps, j'avais trouvé sur un forum ce qui suit pour le goto.
Je me rappelle l'avoir utilisé pour la migration d'une vieille
application en basic (on verse une larme).
Le deuxième est un lien vers un module qui ajoute le goto à python.
http://entrian.com/goto/index.html
Je n'ai pas vérifié si ça marche.

A+
jm

"""
10 i=0
20 if i>10: goto(100)
30 print 'i=',i
40 i += 1
50 goto(20)
100 print 'ok'
"""
z = dict((int(x[0]), " ".join(x[1:])) for x in (y.split() for y in (__doc__
or _).strip().splitlines())); k = [0] + sorted(z.keys()); m = dict((b,a) for
a,b in enumerate(k)); l = k[1]

def goto(n): global l; l = k[m[n]-1]

while l and l <= k[-1]: exec z[l]; l = l != k[-1] and k[m[l]+1]

Avatar
Laurent Pointal
Extrait de la doc :

"Ensuite vient le GOTOGOTO..."
"le GOTOGOTO requiert, en plus du label, un pourcentage de
réussite qui va permettre de calculer la probabilité pour
que le GOTOGOTO vous envoie vraiment à cette étiquette"


Bon je te passe un code exemple que je me suis amusé a faire pour
faire cette boucle

# _*_ coding:Utf-8 _*_

print 'voila un petit programme afin de calculer un pourcentage'

# Les chiffres dont on a besoin

a = float(raw_input('Donner la valeur de votre article :'))
b = float(raw_input('Donner la valeur de votre pourcentage :'))

if a > 0 and b > 0 :
c=((a*b)/100)
d= (a-c)
print 'vous avez demandé sur votre article d'une valeur de' , a ,
'euros, un pourcentage de' , b , '%, ce qui donne une valeur finale
pour votre article de :' , d
elif a < 0 and b > 0 :
print 'vous ne pouvez pas avoir une valeur négative!!! Recommencez le
programme'
elif a > 0 and b < 0 :
print 'votre pourcentage ne peut pas être négatif!!! Recommencez le
programme'
elif a < 0 and b < 0 :
print 'soyons logique, recommencez le programme'

raw_input()


Voila, maintenant, une fois que j'appuis sur une nouvelle touche,
j'aimerais que le programme revienne au point de départ en me
redemendant la valeur a et la valeur b


# _*_ coding:Utf-8 _*_

print 'voila un petit programme afin de calculer un pourcentage'

while True:
# (ton code, indenté d'un cran à droite:)
# Les chiffres dont on a besoin

a = float(raw_input('Donner la valeur de votre article :'))
b = float(raw_input('Donner la valeur de votre pourcentage :'))

if a > 0 and b > 0 :
c=((a*b)/100)
d= (a-c)
print 'vous avez demandé sur votre article d'une valeur de' , a ,
'euros, un pourcentage de' , b , '%, ce qui donne une valeur finale
pour votre article de :' , d
elif a < 0 and b > 0 :
print 'vous ne pouvez pas avoir une valeur négative!!! Recommencez le
programme'
elif a > 0 and b < 0 :
print 'votre pourcentage ne peut pas être négatif!!! Recommencez le
programme'
elif a < 0 and b < 0 :
print 'soyons logique, recommencez le programme'

raw_input()


Si tu veux sortir, tu peux faire qq chose sur la dernière ligne comme:

if raw_input("Continuer (O/N) ?").upper() in ("N","NON","NO) : break


Avatar
fred1599
Et bien moi j'ai vérifié si ça fonctionne, et je te dis que ca marche
au poil.

Merci beaucoup ca me simplifie énormément la vie.

Bye


Bonjour,
J'aimerais faire comme dans les machines a calculer avec la fonction
'lbl' et la fonction 'goto'


Il y a quelques temps, j'avais trouvé sur un forum ce qui suit pour le goto.
Je me rappelle l'avoir utilisé pour la migration d'une vieille
application en basic (on verse une larme).
Le deuxième est un lien vers un module qui ajoute le goto à python.
http://entrian.com/goto/index.html
Je n'ai pas vérifié si ça marche.

A+
jm

"""
10 i=0
20 if i>10: goto(100)
30 print 'i=',i
40 i += 1
50 goto(20)
100 print 'ok'
"""
z = dict((int(x[0]), " ".join(x[1:])) for x in (y.split() for y in (__d oc__
or _).strip().splitlines())); k = [0] + sorted(z.keys()); m = dict((b ,a) for
a,b in enumerate(k)); l = k[1]

def goto(n): global l; l = k[m[n]-1]

while l and l <= k[-1]: exec z[l]; l = l != k[-1] and k[m[l]+1]



1 2