Dans le niouze anglais, j'ai trouvé 2 messages qui intéresseront ceux qui
veulent le GOTO en python.
Beurk diront certains.
Mais ceux qui essayent de migrer de vieilles appli en GW-Basic ou autre
pourraient bien apprécier...
J'ai pas tout compris dans le premier, je vous le livre tel que:
----------------------------------------------------------------------------
-------------------------------
On peut utiliser le goto seulement si on programme avec des numéros de
ligne:
"""
10 import sys
20 real_stdout = sys.stdout
30 class fake_stdout(object): pass
40 fake_stdout.write = lambda x, y: None
50 sys.stdout = fake_stdout()
60 import this
70 sys.stdout = real_stdout
80 d = {}
90 c = 65
100 i = 0
110 d[chr(i+c)] = chr((i+13) % 26 + c)
120 if i == 26: goto(150)
130 i += 1
140 goto(110)
150 if c == 97: goto(180)
160 c = 97
170 goto(100)
180 print "How zen it is:"
190 print "".join([d.get(c, c) for c in this.s])
"""
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]
--
Michael Hoffman
----------------------------------------------------------------------------
-------------------------------
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.
----------------------------------------------------------------------------
-------------------------------
++jm
Dans le même ordre d'idées, quelqu'un connait une asctuce pour avoir un switch/case ?
if a == 'valeur1': print 'valeur1 elif a == 'valeur2': print 'valeur2' else: print 'autre valeur'
Bye Jean-Pierre
bruno modulix
Rico Demono wrote:
Merci beaucoup ça faisait un moment que je cherchais quelque chose comme ça !
Masochiste ?-)
Dans le même ordre d'idées, quelqu'un connait une asctuce pour avoir un switch/case ?
j'en connais au moins trois : 1/ utiliser un if/elif/elif/.../else (pas besoin d'exemple...) Avantage : c'est simple et clair Inconvénient : il y a autant de tests que de cas, ce qui peut être ch... s'il y a beaucoup de cas
2/ utiliser un dictionnaire et des fonctions 'internes':
(Si le code des cases est un simple expression, remplacer les fonctions internes par des lambdas)
C'est amha l'idiome le plus pythonesque et le plus clair.
3/ (OO) utiliser le polymorphisme pour avoir un 'dispatch' dynamique
class Case1: def la_fonction(self, ...): pass
class Case2: def la_fonction(self, ...): pass
class CaseN: def la_fonction(self, ...): pass
# obj est une instance de Case1 ou de Case2 ou ... de CaseN
obj.la_fonction(...)
Cette dernière solution n'est pas toujours utilisable ou appropriée, mais le fait est qu'on voit moins de switch en POO qu'en procédural...
Mes deux centimes...
-- bruno desthuilliers ruby -e "print ''.split('@').collect{|p| p.split('.').collect{|w| w.reverse}.join('.')}.join('@')" --
Rico Demono wrote:
Merci beaucoup ça faisait un moment que je cherchais quelque chose comme ça !
Masochiste ?-)
Dans le même ordre d'idées, quelqu'un connait une asctuce pour avoir un
switch/case ?
j'en connais au moins trois :
1/ utiliser un if/elif/elif/.../else
(pas besoin d'exemple...)
Avantage : c'est simple et clair
Inconvénient : il y a autant de tests que de cas, ce qui peut être ch...
s'il y a beaucoup de cas
2/ utiliser un dictionnaire et des fonctions 'internes':
Merci beaucoup ça faisait un moment que je cherchais quelque chose comme ça !
Masochiste ?-)
Dans le même ordre d'idées, quelqu'un connait une asctuce pour avoir un switch/case ?
j'en connais au moins trois : 1/ utiliser un if/elif/elif/.../else (pas besoin d'exemple...) Avantage : c'est simple et clair Inconvénient : il y a autant de tests que de cas, ce qui peut être ch... s'il y a beaucoup de cas
2/ utiliser un dictionnaire et des fonctions 'internes':
(Si le code des cases est un simple expression, remplacer les fonctions internes par des lambdas)
C'est amha l'idiome le plus pythonesque et le plus clair.
3/ (OO) utiliser le polymorphisme pour avoir un 'dispatch' dynamique
class Case1: def la_fonction(self, ...): pass
class Case2: def la_fonction(self, ...): pass
class CaseN: def la_fonction(self, ...): pass
# obj est une instance de Case1 ou de Case2 ou ... de CaseN
obj.la_fonction(...)
Cette dernière solution n'est pas toujours utilisable ou appropriée, mais le fait est qu'on voit moins de switch en POO qu'en procédural...
Mes deux centimes...
-- bruno desthuilliers ruby -e "print ''.split('@').collect{|p| p.split('.').collect{|w| w.reverse}.join('.')}.join('@')" --
bruno modulix
jean-michel wrote:
Dans le niouze anglais, j'ai trouvé 2 messages qui intéresseront ceux qui veulent le GOTO en python. Beurk diront certains.
En effet : *Beurk* !-)
Mais ceux qui essayent de migrer de vieilles appli en GW-Basic
Ce n'est probablement pas comme ça que je m'y prendrais le cas échéant...
ou autre
<troll> et ceux qui veulent faire du Perl en Python... </troll>
pourraient bien apprécier...
J'ai pas tout compris dans le premier, je vous le livre tel que: ------------------------------- On peut utiliser le goto seulement si on programme avec des numéros de ligne: """ 10 import sys 20 real_stdout = sys.stdout 30 class fake_stdout(object): pass 40 fake_stdout.write = lambda x, y: None 50 sys.stdout = fake_stdout() 60 import this 70 sys.stdout = real_stdout 80 d = {} 90 c = 65 100 i = 0 110 d[chr(i+c)] = chr((i+13) % 26 + c) 120 if i == 26: goto(150) 130 i += 1 140 goto(110) 150 if c == 97: goto(180) 160 c = 97 170 goto(100) 180 print "How zen it is:" 190 print "".join([d.get(c, c) for c in this.s]) """ 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]
zut, je viens de vomir sur mon clavier... C'est malin, maintenant faut tout que je nettoie...
Non, sérieusement, à quoi ça sert que le BDFL se donne la peine de nous pondre un langage lisible, si c'est pour en faire une pareille horreur? C'est de la perversité, là !-)
-- bruno desthuilliers ruby -e "print ''.split('@').collect{|p| p.split('.').collect{|w| w.reverse}.join('.')}.join('@')" --
jean-michel wrote:
Dans le niouze anglais, j'ai trouvé 2 messages qui intéresseront ceux qui
veulent le GOTO en python.
Beurk diront certains.
En effet : *Beurk* !-)
Mais ceux qui essayent de migrer de vieilles appli en GW-Basic
Ce n'est probablement pas comme ça que je m'y prendrais le cas échéant...
ou autre
<troll>
et ceux qui veulent faire du Perl en Python...
</troll>
pourraient bien apprécier...
J'ai pas tout compris dans le premier, je vous le livre tel que:
-------------------------------
On peut utiliser le goto seulement si on programme avec des numéros de
ligne:
"""
10 import sys
20 real_stdout = sys.stdout
30 class fake_stdout(object): pass
40 fake_stdout.write = lambda x, y: None
50 sys.stdout = fake_stdout()
60 import this
70 sys.stdout = real_stdout
80 d = {}
90 c = 65
100 i = 0
110 d[chr(i+c)] = chr((i+13) % 26 + c)
120 if i == 26: goto(150)
130 i += 1
140 goto(110)
150 if c == 97: goto(180)
160 c = 97
170 goto(100)
180 print "How zen it is:"
190 print "".join([d.get(c, c) for c in this.s])
"""
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]
zut, je viens de vomir sur mon clavier... C'est malin, maintenant faut
tout que je nettoie...
Non, sérieusement, à quoi ça sert que le BDFL se donne la peine de nous
pondre un langage lisible, si c'est pour en faire une pareille horreur?
C'est de la perversité, là !-)
--
bruno desthuilliers
ruby -e "print 'onurb@xiludom.gro'.split('@').collect{|p|
p.split('.').collect{|w| w.reverse}.join('.')}.join('@')"
--
Dans le niouze anglais, j'ai trouvé 2 messages qui intéresseront ceux qui veulent le GOTO en python. Beurk diront certains.
En effet : *Beurk* !-)
Mais ceux qui essayent de migrer de vieilles appli en GW-Basic
Ce n'est probablement pas comme ça que je m'y prendrais le cas échéant...
ou autre
<troll> et ceux qui veulent faire du Perl en Python... </troll>
pourraient bien apprécier...
J'ai pas tout compris dans le premier, je vous le livre tel que: ------------------------------- On peut utiliser le goto seulement si on programme avec des numéros de ligne: """ 10 import sys 20 real_stdout = sys.stdout 30 class fake_stdout(object): pass 40 fake_stdout.write = lambda x, y: None 50 sys.stdout = fake_stdout() 60 import this 70 sys.stdout = real_stdout 80 d = {} 90 c = 65 100 i = 0 110 d[chr(i+c)] = chr((i+13) % 26 + c) 120 if i == 26: goto(150) 130 i += 1 140 goto(110) 150 if c == 97: goto(180) 160 c = 97 170 goto(100) 180 print "How zen it is:" 190 print "".join([d.get(c, c) for c in this.s]) """ 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]
zut, je viens de vomir sur mon clavier... C'est malin, maintenant faut tout que je nettoie...
Non, sérieusement, à quoi ça sert que le BDFL se donne la peine de nous pondre un langage lisible, si c'est pour en faire une pareille horreur? C'est de la perversité, là !-)
-- bruno desthuilliers ruby -e "print ''.split('@').collect{|p| p.split('.').collect{|w| w.reverse}.join('.')}.join('@')" --
jean-michel
"bruno modulix" a écrit dans le message de news:420c801e$0$29234$
Rico Demono wrote:
Merci beaucoup ça faisait un moment que je cherchais quelque chose comme ça !
Masochiste ?-)
Pour bientôt, je vous promet quelque chose à propos des cartes perforées...
++jm
"bruno modulix" <onurb@xiludom.gro> a écrit dans le message de
news:420c801e$0$29234$626a14ce@news.free.fr...
Rico Demono wrote:
Merci beaucoup ça faisait un moment que je cherchais quelque chose comme
ça !
Masochiste ?-)
Pour bientôt, je vous promet quelque chose à propos des cartes perforées...
Dans le même ordre d'idées, quelqu'un connait une asctuce pour avoir un switch/case ? [...]
3/ (OO) utiliser le polymorphisme pour avoir un 'dispatch' dynamique
class Case1: def la_fonction(self, ...): pass
class Case2: def la_fonction(self, ...): pass
class CaseN: def la_fonction(self, ...): pass
# obj est une instance de Case1 ou de Case2 ou ... de CaseN
obj.la_fonction(...)
Je ne vois pas l'intérêt de faire ça, car il faudra bien un branchement conditionnel pour choisir la classe à instancier pour obj, non ?
Alex Marandon
On 2005-02-11, bruno modulix wrote: [...]
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] [...]
Non, sérieusement, à quoi ça sert que le BDFL se donne la peine de nous pondre un langage lisible, si c'est pour en faire une pareille horreur? C'est de la perversité, là !-)
Ouaip, on dirait ta signature ;-)
On 2005-02-11, bruno modulix <onurb@xiludom.gro> wrote:
[...]
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]
[...]
Non, sérieusement, à quoi ça sert que le BDFL se donne la peine de nous
pondre un langage lisible, si c'est pour en faire une pareille horreur?
C'est de la perversité, là !-)
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] [...]
Non, sérieusement, à quoi ça sert que le BDFL se donne la peine de nous pondre un langage lisible, si c'est pour en faire une pareille horreur? C'est de la perversité, là !-)
Ouaip, on dirait ta signature ;-)
jean-michel
"bruno modulix" a écrit dans le message de news:420c812a$0$13407$
Non, sérieusement, à quoi ça sert que le BDFL se donne la peine de nous pondre un langage lisible, si c'est pour en faire une pareille horreur? C'est de la perversité, là !-)
Non, c'est simplement que parfois si tu ne peux pas reprendre une vieille appli qui ne tourne plus que sur un vieux PC msdos (qui justement vient de tomber en rade...), tu n'a plus qu'à trouver la solution miracle pour migrer le + vite possible. Les applications héritées sont une réalité en entreprise. Plus personne n'en veux (d'où le beurk), sauf l'utilisateur évidemment.
Cela dit, si tu me trouves un algorithme de migration qui me sort un programme python tout joli à partir d'un vieux code en cobol ou en basic plein de gotos, je suis (très) intéressé...;-)
++jm
"bruno modulix" <onurb@xiludom.gro> a écrit dans le message de
news:420c812a$0$13407$626a14ce@news.free.fr...
Non, sérieusement, à quoi ça sert que le BDFL se donne la peine de nous
pondre un langage lisible, si c'est pour en faire une pareille horreur?
C'est de la perversité, là !-)
Non, c'est simplement que parfois si tu ne peux pas reprendre une vieille
appli qui ne tourne plus que sur un vieux PC msdos (qui justement vient de
tomber en rade...), tu n'a plus qu'à trouver la solution miracle pour migrer
le + vite possible.
Les applications héritées sont une réalité en entreprise. Plus personne n'en
veux (d'où le beurk), sauf l'utilisateur évidemment.
Cela dit, si tu me trouves un algorithme de migration qui me sort un
programme python tout joli à partir d'un vieux code en cobol ou en basic
plein de gotos, je suis (très) intéressé...;-)
"bruno modulix" a écrit dans le message de news:420c812a$0$13407$
Non, sérieusement, à quoi ça sert que le BDFL se donne la peine de nous pondre un langage lisible, si c'est pour en faire une pareille horreur? C'est de la perversité, là !-)
Non, c'est simplement que parfois si tu ne peux pas reprendre une vieille appli qui ne tourne plus que sur un vieux PC msdos (qui justement vient de tomber en rade...), tu n'a plus qu'à trouver la solution miracle pour migrer le + vite possible. Les applications héritées sont une réalité en entreprise. Plus personne n'en veux (d'où le beurk), sauf l'utilisateur évidemment.
Cela dit, si tu me trouves un algorithme de migration qui me sort un programme python tout joli à partir d'un vieux code en cobol ou en basic plein de gotos, je suis (très) intéressé...;-)
++jm
Do Re Mi chel La Si Do
Bonjour !
Pas mal, le truc. C'est carrément un petit interpréteur, en quelques lignes. En tout cas, ça montre la puissance de Python (malgré ceux qui n'aiment pas "exec").
Mais ça reste d'un usage limité. -- Michel Claveau
Bonjour !
Pas mal, le truc. C'est carrément un petit interpréteur, en quelques lignes.
En tout cas, ça montre la puissance de Python (malgré ceux qui n'aiment pas
"exec").
Mais ça reste d'un usage limité.
--
Michel Claveau
Pas mal, le truc. C'est carrément un petit interpréteur, en quelques lignes. En tout cas, ça montre la puissance de Python (malgré ceux qui n'aiment pas "exec").
Mais ça reste d'un usage limité. -- Michel Claveau
Yermat
Alex Marandon wrote:
On 2005-02-11, bruno modulix wrote:
Dans le même ordre d'idées, quelqu'un connait une asctuce pour avoir un switch/case ?
[...]
3/ (OO) utiliser le polymorphisme pour avoir un 'dispatch' dynamique
class Case1: def la_fonction(self, ...): pass
class Case2: def la_fonction(self, ...): pass
class CaseN: def la_fonction(self, ...): pass
# obj est une instance de Case1 ou de Case2 ou ... de CaseN
obj.la_fonction(...)
Je ne vois pas l'intérêt de faire ça, car il faudra bien un branchement conditionnel pour choisir la classe à instancier pour obj, non ?
Pas forcément, ça peut venir d'un fichier de configuration, ou de l'IHM par exemple, ou d'un objet factory qui dépend de...
-- Yermat
Alex Marandon wrote:
On 2005-02-11, bruno modulix <onurb@xiludom.gro> wrote:
Dans le même ordre d'idées, quelqu'un connait une asctuce pour avoir un
switch/case ?
[...]
3/ (OO) utiliser le polymorphisme pour avoir un 'dispatch' dynamique
class Case1:
def la_fonction(self, ...): pass
class Case2:
def la_fonction(self, ...): pass
class CaseN:
def la_fonction(self, ...): pass
# obj est une instance de Case1 ou de Case2 ou ... de CaseN
obj.la_fonction(...)
Je ne vois pas l'intérêt de faire ça, car il faudra bien un branchement
conditionnel pour choisir la classe à instancier pour obj, non ?
Pas forcément, ça peut venir d'un fichier de configuration, ou de l'IHM
par exemple, ou d'un objet factory qui dépend de...