Hi Laura,

Algorithmic code typically is simple enough that standard language
features should suffice.  I think you might pick up an external
library to make it easier to visualize graphical output, but the core
algorithms there appear fairly straightforward.

To get some familiarity with basic Python programming, take a look at
a tutorial like:

    http://www.greenteapress.com/thinkpython/thinkpython.html

and see if you can pick up the basic language features of Python.  If
you have questions with that tutorial, feel free to ask here.


It looks like you need enough to work with structured data (classes)
and the basic data structures (lists, numbers).  At least from my
reading of the "curve simplification" page you pointed us to, I don't
see anything there that's too bad.

*  You'll want a way to represent points.  I think a structured value
would be appropriate.  Think classes.

*  You'll want to represent a sequence of these points.  In Java, you
can hold that collection with ArrayLists or some other list
implementation.  In Python, there's a generic list data structure that
serves a similar purpose.


For example, in Java, you'd represent structured data with classes,
and a collection of these with a List<Person>:

///////////////////////////////////////////////////////////////
class Person {
    private String name;
    public Person(String name) { this.name = name; }
    public void greet() { System.out.println("Hello, my name is " + name); }
}

// Usage:
Person p = new Person("Laura");
p.sayHello();
Person p2 = new Person("Lydia");
List<Person> people = new ArrayList<>();
people.add(p);
people.add(p2);
///////////////////////////////////////////////////////////////


And in Python, you can do an analogous construction:

#####################################
class Person(object):
    def __init__(self, name):
        self.name = name
    def greet(self):
        print("Hello, my name is " + self.name)

## Usage
p = Person("Laura")
p.sayHello()
p2 = Person("Lydia")
people = []
people.append(p)
people.append(p2)
#####################################


So there should be a lot of transfer of basic knowledge between what
you've learned in Java to Python programming.  Many of the concepts
are the same, but the names are just different because of the Tower of
Babel effect.  A basic tutorial of Python will cover these general
topics.


What might be domain-specific here is the visualization part: you'll
want to make it easy to visually see the output of these graphical
algorithms.  You may want to visualize these points on a graphical
canvas on screen.  You could have your program generate an image file
like a .png, .gif, or .svg file.

Another approach may be to use a GUI toolkit that opens up a canvas as
part of the program, where you can then manipulate the canvas.  If you
want to take that approach, you might consider Tkinter, which is a GUI
library that should come bundled with Python if I'm not mistaken.
See:

    http://effbot.org/tkinterbook/canvas.htm

for a canvas example.  So once you have the basic algorithms down, you
might use a Tkinter canvas to visualize and see that your algorithms
are doing something reasonable.
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to