Re: define loop statement?
David Isaac wrote: > PS Here's the motivation. Python closely resembles pseudocode. With > a very little LaTeX hacking, it is often possible to write algorithms is > Python that typeset as reasonable pseudocode. A simple repetitive > loop is a bit of a sticking point. With slightly more LaTeX hacking or possibly Python hacking on your script before passing it to LaTeX, you might just be able to change occurences of for x in range(a, b): to for x in [a, b): or whatever, and get away with plain vanilla Python in your code... -- http://mail.python.org/mailman/listinfo/python-list
Re: define loop statement?
In article <[EMAIL PROTECTED]>, David Isaac <[EMAIL PROTECTED]> wrote: . . . >Admiration wins out over revulsion. ;-) >Thanks, >Alan Isaac > >PS Here's the motivation. Python closely resembles pseudocode. With >a very little LaTeX hacking, it is often possible to write algorithms is >Python that typeset as reasonable pseudocode. A simple repetitive >loop is a bit of a sticking point. > > Wow. Innovative. -- http://mail.python.org/mailman/listinfo/python-list
Re: define loop statement?
"Benji York" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > Here's a flagrant hack: Admiration wins out over revulsion. ;-) Thanks, Alan Isaac PS Here's the motivation. Python closely resembles pseudocode. With a very little LaTeX hacking, it is often possible to write algorithms is Python that typeset as reasonable pseudocode. A simple repetitive loop is a bit of a sticking point. -- http://mail.python.org/mailman/listinfo/python-list
Re: define loop statement?
David Isaac wrote: > I would like to be able to define a loop statement > (nevermind why) so that I can write something like > > loop 10: > do_something Here's a flagrant hack: import sys VAR_NAME = '__repeat_counter' def set_repeat_counter(value): frame = sys._getframe(2) frame.f_locals[VAR_NAME] = value def get_repeat_counter(value): frame = sys._getframe(2) if VAR_NAME not in frame.f_locals: frame.f_locals[VAR_NAME] = value return frame.f_locals[VAR_NAME] def repeat(limit): set_repeat_counter(get_repeat_counter(limit)-1) return get_repeat_counter(limit) while repeat(10): print 'OK' Without more work it doesn't allow nested loops though. And for the record, if you're worrying about Python's counted loop construct you need better things to worry about. -- Benji York -- http://mail.python.org/mailman/listinfo/python-list
Re: define loop statement?
Em Dom, 2006-02-19 às 11:08 +1100, Nigel Rowe escreveu: > Felipe Almeida Lessa wrote: > > > Em Sáb, 2006-02-18 às 20:04 +, Jeffrey Schwab escreveu: > >> if __name__ == '__main__': > >> loop = Loop(10) > >> while loop: > >> print "OK" > > > > Maybe: > > > > while Loop(10)(): > > print "OK" > > > > Looks rather ugly but requires one less line ;-). > > > Doesn't work. You get a NEW Loop(10) instance on each pass through the > 'while'. This is just an expensive way to make an endless loop. Oh, sorry, ignore me on that one. Now I think I should sleep =S... -- "Quem excele em empregar a força militar subjulga os exércitos dos outros povos sem travar batalha, toma cidades fortificadas dos outros povos sem as atacar e destrói os estados dos outros povos sem lutas prolongadas. Deve lutar sob o Céu com o propósito primordial da 'preservação'. Desse modo suas armas não se embotarão, e os ganhos poderão ser preservados. Essa é a estratégia para planejar ofensivas." -- Sun Tzu, em "A arte da guerra" -- http://mail.python.org/mailman/listinfo/python-list
Re: define loop statement?
Felipe Almeida Lessa wrote: > Em Sáb, 2006-02-18 às 20:04 +, Jeffrey Schwab escreveu: >> if __name__ == '__main__': >> loop = Loop(10) >> while loop: >> print "OK" > > Maybe: > > while Loop(10)(): > print "OK" > > Looks rather ugly but requires one less line ;-). > Doesn't work. You get a NEW Loop(10) instance on each pass through the 'while'. This is just an expensive way to make an endless loop. -- Nigel Rowe A pox upon the spammers that make me write my address like.. rho (snail) swiftdsl (stop) com (stop) au -- http://mail.python.org/mailman/listinfo/python-list
Re: define loop statement?
Em Sáb, 2006-02-18 às 20:04 +, Jeffrey Schwab escreveu: > if __name__ == '__main__': > loop = Loop(10) > while loop: > print "OK" Maybe: while Loop(10)(): print "OK" Looks rather ugly but requires one less line ;-). -- "Quem excele em empregar a força militar subjulga os exércitos dos outros povos sem travar batalha, toma cidades fortificadas dos outros povos sem as atacar e destrói os estados dos outros povos sem lutas prolongadas. Deve lutar sob o Céu com o propósito primordial da 'preservação'. Desse modo suas armas não se embotarão, e os ganhos poderão ser preservados. Essa é a estratégia para planejar ofensivas." -- Sun Tzu, em "A arte da guerra" -- http://mail.python.org/mailman/listinfo/python-list
Re: define loop statement?
> Alan Isaac wrote: > > I would like to be able to define a loop statement > > (nevermind why) so that I can write something like > > > > loop 10: > > do_something > > > > instead of > > > > for i in range(10): > > do_something > > > > Possible? If so, how? "Jeffrey Schwab" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > class Loop: > def __init__(self, n): > self.n = n > def __call__(self): > self.n = self.n - 1 > return self.n != 0 > > > if __name__ == '__main__': > loop = Loop(10) > while loop(): > print "OK" OK, that's pretty good. Thanks! Alan Isaac -- http://mail.python.org/mailman/listinfo/python-list
Re: define loop statement?
Jeffrey Schwab wrote: > class Loop: > def __init__(self, n): > self.n = n > def __call__(self): > self.n = self.n - 1 > return self.n != 0 > > > if __name__ == '__main__': > loop = Loop(10) > while loop: Whoops. Should be "while loop()". > print "OK" -- http://mail.python.org/mailman/listinfo/python-list
Re: define loop statement?
Jeffrey Schwab wrote: > class Loop: > def __init__(self, n): > self.n = n > def __call__(self): > self.n = self.n - 1 > return self.n != 0 > > > if __name__ == '__main__': > loop = Loop(10) > while loop: > print "OK" Seems you forgot "()" after "while loop" above. Georg -- http://mail.python.org/mailman/listinfo/python-list
Re: define loop statement?
David Isaac wrote: > I would like to be able to define a loop statement > (nevermind why) so that I can write something like > > loop 10: > do_something > > instead of > > for i in range(10): > do_something > > Possible? If so, how? Ruby and Smalltalk are both good at this kind of thing, since they have syntactic support for associating a block with each method call. In Python, I think you just have to do a little more setup. How about something like this? class Loop: def __init__(self, n): self.n = n def __call__(self): self.n = self.n - 1 return self.n != 0 if __name__ == '__main__': loop = Loop(10) while loop: print "OK" -- http://mail.python.org/mailman/listinfo/python-list
Re: define loop statement?
No, not in the way you think it is. What you can do instead is something like this: def do_something(i): ... do_something ... def loop(n, func): for i in range(n): func(i) loop(10, do_something) -- http://mail.python.org/mailman/listinfo/python-list
Re: define loop statement?
Rene Pijlman wrote: > David Isaac: >> I would like to be able to define a loop statement >> (nevermind why) so that I can write something like >> >> loop 10: >>do_something >> >> instead of >> >> for i in range(10): >>do_something >> >> Possible? If so, how? > > Yes. By implementing a compiler or an interpreter for your programming > language. Or a preprocessor that converts your language to Python, or some > other suitable intermediate language. Or a programmer, that converts your > pseudocode and some coffee to the desired algorithm :-) > Or by hacking through the Python source and creating his own "somehow pythonish but absolutely not python" language -- http://mail.python.org/mailman/listinfo/python-list
Re: define loop statement?
David Isaac: > I would like to be able to define a loop statement > (nevermind why) so that I can write something like > > loop 10: > do_something > > instead of > > for i in range(10): > do_something > > Possible? If so, how? It seems that you are looking for macros; maybe Logix "language" (www.livelogix.net/logix) or Boo (boo.codehaus.org) can solve your problem. Otherwise you can do it with very different languages like Lisp or Scheme (with a different syntax) and maybe Dylan too. If you tell us your purpose, maybe we can suggest you a better/different solution. Bye, bearophile -- http://mail.python.org/mailman/listinfo/python-list
Re: define loop statement?
David Isaac: >I would like to be able to define a loop statement >(nevermind why) so that I can write something like > >loop 10: >do_something > >instead of > >for i in range(10): >do_something > >Possible? If so, how? Yes. By implementing a compiler or an interpreter for your programming language. Or a preprocessor that converts your language to Python, or some other suitable intermediate language. Or a programmer, that converts your pseudocode and some coffee to the desired algorithm :-) -- René Pijlman -- http://mail.python.org/mailman/listinfo/python-list
Re: define loop statement?
David Isaac wrote: > I would like to be able to define a loop statement > (nevermind why) so that I can write something like > > loop 10: > do_something > > instead of > > for i in range(10): > do_something > > Possible? If so, how? It's not possible to create a new statement, with suite and indentation rules without hacking the interpreter or resorting to alternative bytecode compilers such as "pyc". Creating a _function_ named "loop" is easy as Jonathan's answer shows. Georg -- http://mail.python.org/mailman/listinfo/python-list
define loop statement?
I would like to be able to define a loop statement (nevermind why) so that I can write something like loop 10: do_something instead of for i in range(10): do_something Possible? If so, how? Thanks, Alan Isaac -- http://mail.python.org/mailman/listinfo/python-list
Re: define loop statement?
Rene Pijlman wrote: > David Isaac: >> I would like to be able to define a loop statement >> (nevermind why) so that I can write something like >> >> loop 10: >>do_something >> >> instead of >> >> for i in range(10): >>do_something >> >> Possible? If so, how? > > Yes. By implementing a compiler or an interpreter for your programming > language. Or a preprocessor that converts your language to Python, or some > other suitable intermediate language. Or a programmer, that converts your > pseudocode and some coffee to the desired algorithm :-) > Or by hacking through the Python source and creating his own "somehow pythonish but absolutely not python" language -- http://mail.python.org/mailman/listinfo/python-list