I actually like it if a language lets you spell out your intention, although 
adding many keywords is not a plus.

So, yes something like:

        loop
                ...
        end loop;

Is appealing as it makes clear the decision on when to exit the loop must be 
within the loop (or till something kills ...)

 In languages like C/C++ there are people who make up macros like:

#define INDEFINITELY_LOOP while (true)

Or something like that and then allow the preprocessor to replace 
INDEFINITELY_LOOP with valid C code.

So, how to do something like that in python, is a challenge left to the user 😉

Bottom line I find is it is a great idea to write comments as even if you are 
the one reviewing the code much later, you may struggle to figure out what you 
did and why.

-----Original Message-----
From: Python-list <python-list-bounces+avigross=verizon....@python.org> On 
Behalf Of Dennis Lee Bieber
Sent: Sunday, September 5, 2021 12:50 PM
To: python-list@python.org
Subject: Re: on writing a while loop for rolling two dice

On Sat, 4 Sep 2021 12:27:55 -0500, "Michael F. Stemper"
<michael.stem...@gmail.com> declaimed the following:

>
>Kernighan and Ritchie agree(d) with you. Per _The C Programming
>Language__:
>   Experience shows that do-while is much less used that while
>   and for.
>

        And just for confusion, consider languages with "repeat / until"...

        "do / while" repeats so long as the condition evaluates to "true"; 
"repeat / until" /exits/ when the condition evaluates to "true".

        Then... there is Ada...

        While one is most likely to encounter constructs:

        for ix in start..end loop
                ...
        end loop;

and

        while condition loop
                ...
        end loop;

the core construct is just a bare

        loop
                ...
        end loop;

which, with the "exit when condition" statement allows low-level emulation of 
any loop... (same as Python "if condition: break"

        loop    -- "while" loop
                exit when not condition;
                ...
        end loop;

        loop    -- "repeat / until"
                ...
                exit when condition;
        end loop;

        loop    -- split
                ...
                exit when condition;
                ...
        end loop;

{I'm not going to do the "for" loop, but one can easily manage 
initialization/increment/test statements}.


        To really get your mind blown, look at loops in REXX...

        do while condition
                ...
        end

        do until condition
                /* note that the termination parameter is listed at top, */
                /* but takes effect at the bottom, so always one pass */
                ...
        end

        do forever
                ...
                if condition then
                        leave
                ...
        end

        do idx = start to end /* optional: by increment */
                ...
        end

        do idx = 1 by increment for repetitions
                ...
        end

AND worse! You can combine them...

        do idx = start for repetitions while condition1 until condition2
                ...
        end

{I need to check if both while and until can be in the same statement}


-- 
        Wulfraed                 Dennis Lee Bieber         AF6VN
        wlfr...@ix.netcom.com    http://wlfraed.microdiversity.freeddns.org/

--
https://mail.python.org/mailman/listinfo/python-list

-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to