Home » Python » Python programs

# Design Traditional and Magic Calculator in Python3

Here, we are implementing **Traditional (Simple) calculator and Magic Calculator using Python3**.

Submitted by Himanshu Bhatt, on September 18, 2018

We will build a **calculator program** in this article using **python3**. If you search for a **python calculator program** on the internet, you will definitely find many of them and most of the **basic calculator programs**, like one below:

## 1) Traditional Calculator Program

# Program make a simple calculator that can # add, subtract, multiply and divide using functions # This function adds two numbers def add(x, y): return x + y # This function subtracts two numbers def subtract(x, y): return x - y # This function multiplies two numbers def multiply(x, y): return x * y # This function divides two numbers def divide(x, y): return x / y print("Select operation.") print("1.Add") print("2.Subtract") print("3.Multiply") print("4.Divide") # Take input from the user choice = input("Enter choice(1/2/3/4):") num1 = int(input("Enter first number: ")) num2 = int(input("Enter second number: ")) if choice == '1': print(num1,"+",num2,"=", add(num1,num2)) elif choice == '2': print(num1,"-",num2,"=", subtract(num1,num2)) elif choice == '3': print(num1,"*",num2,"=", multiply(num1,num2)) elif choice == '4': print(num1,"/",num2,"=", divide(num1,num2)) else: print("Invalid input")

**Output**

**Explanation:**

This calculator program is made using simple if...else condition, we created 4 functions (addition, subtraction, multiplication, and division) for our 4 different operations. We had a print command for out basic outputs and operation variable stores the value of users choice which a number and perform an operation associated with that number and will produce the result.

**Pretty interesting??? BOOO!!!!!** I know this calculator is capable of doing only 4 operations and only can do one operation in its life cycle. This is what you can find on the internet, here in next section we used a better approach to build a calculator program.

## 2) Magic Calculator | A Better Approach

**The thing to remember:** Before we start, just know we make use Regex (regular Expression) here, so if you are not familiar with it don’t worry we got you covered, we will get through this as required of the moment.

In the modern calculator, that you have probably seen in windows and Linux these won’t ask you for choosing an operation they perform tasks you type.

**Image courtesy:** My windows inbuilt calculator

And on hitting enter key it will produce the result, and in this section, we shall make a calculator program.

**Program:**

import re print("Our Magical Calculator") print("Type x to close") previous = 0 run = True def performMath(): global run global previous equation = "" if previous == 0: equation = input("Enter Equation: ") else : equation = input(str(previous)) if equation == 'x': print("GoodBye!!!") exit(0) else: equation = re.sub('[a-zA-Z,:()" "]',"",equation) if previous == 0: previous = eval(equation) else: previous = eval(str(previous) + equation) while run: performMath()

**Output**

**Explanation:**

Ok... I agree it’s a lot to grasp so we will understand the above program in steps.

First, we imported the **Regex library**, and some output for a user and define a variable like run = True and previous = 0. In while we called our performMath() function we created before. Since while is checking run so it’s an infinite loop.

Now, performMath() is our important component of the program as it the one performing all the operations.

In the first two lines of performMath() we used global keywords so that the run and previous variable we will use in the function we referred as a global variable instead of function local variable.

If previous will be zero that is we just started our program we so our calculator will ask for input otherwise it will append in previous equation itself.

In the second if...else case, it checks if the user pressed 'x' to quit if not then we called re.sub() that the regex function which takes 3 parameters **1.pattern 2.substitute 3.string**. re.sub() is substitution which replaces **‘pattern’ with ‘substitute’ in the ‘string’**.

Now we will look into some basic regex expression we used above, we used [] (square brackets) because it defines the set of characters that need to include in the pattern, and we can use hyphen (-) to set the characters to range in which case we choose between a to z and A to Z including other symbols and replaced them with blank spaces just to remove them from the equation string and stored it in equation itself.

In the third if...else case, we checked if previous hold any prior calculation if not to evaluate the equation with eval() function otherwise evaluate it after appending previously calculated value with the current equation.

Note: eval() function is something we shouldn't be using (in general) in our python code, because it can evaluate anything that is passed as its parameter, meaning it can actually calculate all multiplication, division, addition and subtraction as well as exponential and the calculating remainder as well. But it has a dark side too that we need to avoid, that is eval() function can actually run any python command that passed as its parameter even if its as simple as print() it will execute the command so as the security point of view we shouldn't be using it so we used Regex here to eliminate all the letters and keep only numerical characters.

If you are curious about Regex you can read here: Google python Regex

Related Programs

- Python program to find number of bits necessary to represent an integer in binary
- Python program to print number of bits to store an integer and also print number in Binary format
- Python program to print an array of bytes representing an integer
- Python program to print the binary value of the numbers from 1 to N
- Python | Create a line plot using matplotlib.pyplot
- Python | Create a bar chart using matplotlib.pyplot
- Python | Create a bar graph with using matplotlib.pyplot
- Python | Create a stacked bar using matplotlib.pyplot
- Python | Create a scatter plot using matplotlib.pyplot
- Python | Create pie-chart using matplotlib.pyplot
- Python | Create stack plot using matplotlib.pyplot
- Python program for plotting in same and different graph
- Histogram using Pylab in Python
- Python program for single dice simulation

- Python program for single biased dice simulation
- Python program for biased coin flipping simulation
- Python program for double biased dice simulation
- Python program for double dice (one biased one normal) simulation
- Python program to generate the QR code in Python
- Greedy algorithm for a knapsack problem with the example of Robbery in Python
- Corona Virus Live Updates for India (District Wise) – Using Python
- English dictionary application using Python
- Emotional and Sentiment Analysis with the help of Python
- Control Mouse in Python
- Edge Detection of Image using OpenCV (CV2) in Python
- Cropping an Image using OpenCV in Python
- Converting an OpenCV Image to Black and White in Python

Comments and Discussions!