Date: prev next · Thread: first prev next last
2015 Archives by date, by thread · List index

Kolbjørn Stuestøl wrote:
Continuing experimenting with LibreLogo.

Help for LibreLogo says that:

PRINT RANGE 3 10 3 ; print [3, 6, 9] (i.e. outputs 3, 6, 9.)

When I try it I get the output: "range (3 10 3)".
(Also "LABEL RANGE 3 10 3" and "TEXT RANGE 3 10 3" outputs "range (3 10

I do not know Python programming. Is this the way Python handles lists?
Help call this a Python-like list generation.

It looks like the LibreLogo code is translated into Python code, and what you're seeing is a change between Python 2.7 and Python 3. In Python 2.7, range() returns a list of values, which would display as [3, 6, 9]. In Python 3, range() returns an iterable object, which will return each value in turn as you iterate over it (it doesn't actually create a list of all the values, so is more efficient for large ranges).

I expected that "PRINT RANGE 0 10 2" will output every second item in
the range: 0, 2, 4, 6, 8.

In Python, you should be able to get a list by using:
  list(range(0, 10, 2))
I'm not sure how that would be done in Logo though; perhaps:
  LIST RANGE 0 10 2
following the syntax you've shown in other examples.

On the other hand, the function
FOR :n IN RANGE 10 101 5 [
     FORWARD :n LEFT 90
works as expected.

The "for" loop iterates over the iterator returned by range(), so executes the loop for each number which would have been in the list.

Am I misunderstanding the Help for RANGE or is the Help incorrect?

Perhaps the help is out of date, or perhaps it depends which version of Python you have. I don't know whether LibreLogo includes a Python interpreter or uses one you install separately.

Hoping I am not the only one playing with LibreLogo :-)


To unsubscribe e-mail to:
Posting guidelines + more:
List archive:
All messages sent to this list will be publicly archived and cannot be deleted


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.