> "Python is a programming language that is easy to get started with, good for beginners"

I couldn't disagree more. In my experience, Python is a terribly difficult language for anyone who doesn't already have a solid grasp on common programming concepts. Its syntax is easy to read, but it's chuck-full of features and optimized for experienced developers, not beginners.

For example, consider a simple counting loop in C...

for(int i = 0; i < 5; i++) {
printf("%d\n", i);
}

That code is a little obtuse, but what it does is very simple. The `for` loop requires three statements - initialization, condition, and iterator. The initialization statement (int i = 0) is only called at the beginning of the loop and is used to define our variable (in this case, i).

Next the `for` loop executes the condition statement. If the condition evaluates to true, it executes the body of the loop, then the iterator statement, then jumps back to the condition and tries again. If the condition evaluates to false, it moves on to the next line of code after the `for` loop.

In this case, our loop initializes i as 0. The condition `i < 5` means the loop will execute the body until i >= 5. The body simply prints the value of i and, after the body is executed each time, the loop executes our iterator statement which increments i by 1.

So long as you understand variables, conditions, arithmetic operators, and the `printf()` function you can figure out a `for` loop in C. Now consider the same thing in Python...

for i in range(5):
print(i)

That code is pretty easy to read, but what does it do? The `for` loop is used to iterate over an "iterable" object, which is a collection of multiple values. The body of the loop is executed for each value in the collection and assigns i a value from the collection for each iteration. In this case, our collection is output by the call to `range(5)`. The body of our loop simply prints the value of i.

What's an object? An object is a thing with attributes (variable within the object) and methods (functions within the object). Objects can be values of variables just like any primitive value.

What does range do? The builtin function `range` outputs a generator which yields values from the minimum (default 0) to the maximum (in this case 5) at a given step (default 1). The minimum is inclusive but the maximum is not so in this case it will yield 0, 1, 2, 3, and 4.

What's a generator? First we need to define "iterator". An iterator is an object which helps to iterate over a collection of values. All iterators have a special `__next__()` method which returns the next value in the collection. When there are no more values left to iterate over in the collection, the `__next__()` method raises a `StopIteration` exception. A generator is a type of iterator which mimics having a collection but instead of holding a collection of values in memory and iterating over them, it generates each value one-at-a-time only when the `__next__()` method is called. In our case, the generator starts at 0 for the first value and adds 1 to the output each time `__next__()` is called. When it reaches 5, instead of returning it raises the `StopIteration` exception.

What's an exception? An exception is a mechanism for interrupting execution of code. Instead of continuing to the next line of code, an exception causes the program to exit the call stack one level at a time until it either reaches the top or is caught by something. In our case, the `for` loop catches that `StopIteration` exception for us and uses that to know when to stop. Hopefully you know what the call stack is by now.

Yeah, a novice could probably ignore most of this stuff and just take for granted that the body of the loop will get executed for each value in the range 0..n (where n is the value given to `range()`). But this is just one example. Python requires novices to take a lot of things for granted from the start. Its syntax is mostly simple and elegant, but in terms of functionality it hurls developers into the deep end and they often have a hard time staying afloat if they haven't already learned the basics with other languages.

...that said, I'm rather fond of Python and think it's a great fit for programmable calculators for a variety of other reasons. "Good for beginners" just isn't one of them.