My programming blog

4 ways to build a simple calculator in Python - Part 3

In this concluding part of the series, I will build an abstract syntax tree or AST. An AST holds the information present in the arithmetic expression and can be evaluated to yield the result. It is built from grammar rules just like the translator in part 2 and evaluated using …

4 ways to build a simple calculator in Python - Part 2

In this part of the series, I will build the calculator as a translator. The translator will evaluate the arithmetic expression according to a set of rules. It will consist of a lexer that will produce a stream of tokens from the input, and a parser that will check the …

4 ways to build a simple calculator in Python - Part 1

The internet abounds with tutorials on programming projects like building a calculator, for instance. The focus is often on the GUI aspects, ignoring the complexities of expression evaluation. Mathematical expressions are usually evaluated by the eval function. This is not a safe method if arbitrary input is allowed. In this …

Heap data structures in CS

In this post, I am going to tell you about different heap data structures that are common in Computer Science. I will start with the basic heap structure, i.e. the binary heap, and then discuss binomial and Fibonacci heaps. The code for each data structure is in Python. For …

More on the Python traceback

This post adds to the content of the fine article by Real Python titled Understanding the Python traceback. It expands on the topic of chained exceptions and explains what a traceback object is.

First, to repeat for convenience what has been said in that article: when an exception occurs while …

How to find permutations of n numbers with Python the hard way

Suppose we want to find permutations of numbers from 1 to n using Python. Easily done, right ? Just use the standard library function itertools.permutations to find the n! number of permutations. But in this post, I am going to illustrate how you can list them, starting from scratch. I …