Square A Number In Python Without Importing Math Library

How do you square a number in Python, and how do you check if a number is a square using Python?

To square a number in Python use the power operator ** followed by the number 2. For example, to square the number 9 simply write 9 ** 2 .

Here’s an example demonstrating the use of this operator when squaring a number:

>>> 5 ** 2
25.0
>>> 12 ** 2
144.0
>>> -9 ** 2
-81.0

Wait! I thought squaring a negative number produces a positive number? Doesn’t -9 x -9 = +81 ? Why then does Python give a negative answer?

Python has interpreted the last example above as follows: 9 ** 2 and then -1 * 81 .

To ensure a negative number is squared properly be sure to wrap the number in parentheses, like so:

>>> (-9) ** 2
81

This follows the BODMAS mathematical principle where numbers in brackets are evaluated first, followed by order (power) operations.

You can apply the same technique if trying to cube a number, simply change the exponent (the number after the power operator) to 3 as seen below:

>>> 9 ** 3
729

Can You Use math.pow() To Square A Number?

If you still want to use the math library you can use the math.pow(n, e) method which takes two parameters the first being the number and the second being the exponent raised.

An example of this is demonstrated below:

>>> import math
>>> math.pow(9, 2)
81.0
>>> math.pow(-9, 2)
81.0

As can be seen from the above example, squaring a number using the math library is achieved by using the math.pow() function with the second parameter, the exponent, being the number 2 .

Is A Number A Square Number?

Is there a way to determine if a number is a square number in Python?

What is a square number? A square number is a number that can be multiplied by the same integer twice. For example, 81 is a square number because the integer 9 when squared is equal to it. However, 82 is not a square number because neither 9 nor 10 when squared is equal to it.

One approach to finding if a number is a square number in Python is to square root the number , remove any remainders, then square that rounded number and see if it matches the original number.

Here’s how this would look in the Python REPL as a one-liner:

>>> ((81 ** (1/2)) // 1) ** 2 == 81
True
>>> ((82 ** (1/2)) // 1) ** 2 == 82
False

In the first example above I used a square number, the number 81 and applied the square root one-liner technique then I applied the // operator which obtains the integer portion of a division operation (in essence truncating or removing any remainders) and then I applied the power operator to square it all.

An alternative could have been to use the built-in function round() like so:

>>> round(81 ** (1/2)) ** 2 == 81
True
>>> round(82 ** (1/2)) ** 2 == 82
False

Finally, an equality expression is assigned to the original number to see if it matches. In the first example, it does, and confirms the expression. The second example fails and once again confirms the expression.

The same technique could be applied to other problems such as determining whether a number is a cube number, here you’ll see why the round() is preferred to the // truncating operator:

>>> 5 ** 3
125
>>> ((125 ** (1/3)) // 1) ** 3 == 125
False

As shown above the cube of 5 is 125, therefore, if using the same approach to determine if a number is a cube number we get a False value – which is incorrect. This has to do with floating-point precision . Therefore, to get around this issue using this approach apply the round() function as follows:

>>> round(125 ** (1/3)) ** 3 == 125
True

Finally, the expression used above could be modified to use the math library, as demonstrated below:

>>> import math
>>> math.pow(round(math.sqrt(81)), 2) == 81
True
>>> math.pow(round(math.sqrt(82)), 2) == 82
False

Summary

Squaring a number in Python can be done using the power operator followed by the number 2 like 9 ** 2 would represent the squaring of the number 9. This can be done without needing to import the math library.

If, however, you would like to use the math library there is a power function math.pow(n, e) where the exponent e would be the value 2 and the first parameter n would represent the number you’re trying to square. For example, math.pow(9, 2) producing the equivalent result of 9 ** 2 .

Photo of author
Ryan Sheehy
Ryan has been dabbling in code since the late '90s when he cut his teeth exploring VBA in Excel. Having his eyes opened with the potential of automating repetitive tasks, he expanded to Python and then moved over to scripting languages such as HTML, CSS, Javascript and PHP.