[Python-ideas] Simpler syntax for basic iterations

Ryan Gonzalez rymg19 at gmail.com
Fri Oct 9 22:27:53 CEST 2015


Just use:


for _ in range(n):
    # magic here


and tell them they'll figure out what the _ is later on. That's how I learned it...

BTW, that Guido van Robot thing is kind of funny... :D

On October 9, 2015 3:22:43 PM CDT, Andre Roberge <andre.roberge at gmail.com> wrote:
>Summary:  Visual environments based on using
>simple functions without using variables have been found
>to be useful to introduce programming concepts to young
>learners.  While Python is an ideal language for beginners,
>the Python construct for iterations, namely
>
>for var in range(n):
>    # block
>    # of
>    # code
>
>does require a variable and is needlessly complicated for
>beginners.  A simpler construct like:
>
>repeat n:    # n is a specific integer
>    # block
>    # of
>    # code
>
>would be useful to have in such contexts.  Other keywords could
>be chosen instead of "repeat" used above.
>
>====
>
>For young (and perhaps not so young) students
>visual environments are an ideal choice to learn programming.
>A well-known example of a visual environment for beginners
>is Karel the Robot, invented by Richard Pattis in 1981.
>In this environment, a robot can perform a limited number
>of basic functions which can be combined to create
>complex tasks.
>
>In the original Karel the Robot, variables were not
>allowed.  However, new procedures could be created.
>
>One essential concept that can be demonstrated in such worlds
>is that of iterations.  In the original Karel, this was
>done using the following syntax:
>
>ITERATE n TIMES
>    single_instruction
>
>or
>
>ITERATE n TIMES
>    BEGIN
>        single_instruction;
>        other_instruction;
>    END
>
>where "n" is a specific integer.  In the above, indentation
>has been introduced only to make the code easier to read.
>
>A popular Python-like implementation of Pattis' idea
>is Guido van Robot [1], also known as GvR.
>In GvR, iteration is done as follows:
>
>do n:
>    # block
>    # of
>    # code indented like Python
>
>To do something equivalent in Python requires to use:
>
>for var in range(n):
>    # block
>    # of
>    # code
>
>which requires to use variables, which are not part of
>the original Karel the Robot philosophy, as well as an
>additional builtin function.  I would argue that,
>for beginners, this is needlessly complicated.
>A better alternative would be to use a similar
>syntax to that used by Guido van Robot for this case.
>This would require to either introduce a new keyword
>(such as "do", "repeat", "iterate", or "loop")
>
>repeat n:
>    # block
>    # of
>    # code
>
>An advantage of using one of these keywords would
>be for easier readability (for English speakers).
>The disadvantage is that some existing Python programs
>might use variables with the names suggested
>above.
>
>An alternative would be to reuse the "for" keyword by
>adding this new construct to the grammar:
>
>for n:
>    # block
>    # of
>    # code
>
>This last choice, while perhaps not as immediately readable
>to English speakers as some of the previous ones, would
>have the advantage of not requiring any change to
>any existing Python programs; it could thus be implemented
>rather quickly without needing some transition
>time and the use of the __future__ module.
>
>There exists at least 4 different pure Python implementations of
>Karel the Robot where this new construct could, in principle,
>be immediately put to use:
>
>RUR-PLE [2], Rurple NG [3], both of which are desktop versions,
>Reeborg's World [4], a web version using Brython as a Python
>interpreter, and Monty Karel [5], an Eclipse plugin which
>is targeted at older students as it uses a not so simple
>OOP syntax even for the simplest programs.
>Young learners using any of the first three such implementations
>would likely benefit if they could learn programming first
>using this simpler construct.
>
>André Roberge
>
>[1] Guido van Robot:
>http://gvr.sourceforge.net/documents/languageRef/gvr.html
>
>[2] RUR-PLE: https://code.google.com/p/rur-ple/
>
>[3] Rurple NG:
>http://www.lshift.net/downloads/dev.lshift.net/paul/rurple/manual.html
>
>[4] Reeborg's World  documentation:
>http://reeborg.ca/docs/en/index.html
>    World itself: http://reeborg.ca/world.html
>    Python tutorial: http://reeborg.ca/docs/begin_py_en/
>
>[5] Monty Karel:
>http://www.csis.pace.edu/~bergin/MontyKarel/MontyInEclipse.html
>
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Python-ideas mailing list
>Python-ideas at python.org
>https://mail.python.org/mailman/listinfo/python-ideas
>Code of Conduct: http://python.org/psf/codeofconduct/

-- 
Sent from my Nexus 5 with K-9 Mail. Please excuse my brevity.


More information about the Python-ideas mailing list