[Python-ideas] Updating PEP 315: do-while loops
spir
denis.spir at free.fr
Sun Apr 26 14:17:20 CEST 2009
Le Sat, 25 Apr 2009 21:50:52 -0500,
Ron Adam <rrr at ronadam.com> s'exprima ainsi:
> Visualize the while, continue, and break with syntax highlighting.
>
> while:
> j = _int(random() 8 n)
> break if j not in selected
>
> Or if the reverse comparison is preferred you could do...
>
> while:
> j = _int(random() * n)
> continue if j in selected
> break
But
(1) This does not give any advantage compared to existing syntax
if condition: break | continue
(2) It does not solve the problem which, I guess, is to express the loop's logic obviously -- meaning in the header (or footer) instead of hidden somewhere in the body -- and nicely avoid numerous "while 1:" and "break" as a side-effect. What Raymond's proposals provide.
What is not obvious at all is that:
do ... while j in selected:
j = _int(random() * n)
means the assignment will be done at least once (and no NameError thrown). Where/how is it said? The above code is supposed to mean something like:
do once then while j in selected:
j = _int(random() * n)
But maybe it's only me.
Footer solutions (condition at end of loop) seem not to have Raymond's favor; still they are obvious in comparison:
do:
j = _int(random() * n)
<your favored end condition syntax> j in selected
Denis
------
la vita e estrany
More information about the Python-ideas
mailing list