# [Tutor] Calculate 4**9 without using **

Sri Kavi gvmcmt at gmail.com
Sun Mar 5 04:42:29 EST 2017

```I’ve improved it a bit to meet the following conditions:

1. type(base) == int and exponent == 0

2. base == 0 < exponent

3. (base > 0 or base < 0) and exponent > 0

4. base > 0 > exponent

5. base < 0 > exponent

6. base == 0 > exponent

def power(base, exponent):

if type(base) == int and exponent == 0:

return 1

elif base == 0 < exponent:

return 0

elif (base > 0 or base < 0) and exponent > 0:

result = base

for _ in range(1, exponent):

result *= base

return result

elif base > 0 > exponent:

exponent = -(exponent)

result = base

for _ in range(1, exponent):

result *= base

return 1 / result

elif base < 0 > exponent:

exponent = -exponent

result = base

for _ in range(1, exponent):

result *= base

return 1 / result

elif base == 0 > exponent:

print('0 cannot be raised to a negative power.')

#Testing first condition

print(power(0, 0))

print(power(-1, 0))

print(power(1, 0))

#Testing second condition

print(power(0, 3))

#Testing third condition

print(power(2, 3))

print(power(-2, 3))

#Testing fourth condition

print(power(2, -3))

#Testing fifth condition

print(power(-2, -3))

#Testing sixth condition

print(power(0, -3))

I don’t know if it’s anywhere near built-in pow() function, but your reply
made me think about all those conditions and try to see if I can make my
previous function code a little better. I need your feedback please.

Sri

On Sun, Mar 5, 2017 at 7:37 AM, Alex Kleider <akleider at sonic.net> wrote:

> On 2017-03-04 08:17, Sri Kavi wrote:
>
> I'm a beginner learning to program with Python. I'm trying to explain a
>> solution in plain English. Please correct me if I'm wrong.
>>
>
> Create a function that takes base and exponent as arguments.
>>
>
> Is seems that you are facing the same problem as Tasha Burman.
> Sounds like an assignment meant to exercise your use of iteration.
> i.e. ** and various built in power functions that have been suggested are
> out of bounds.
>
> In the body of the function:
>> set a result variable to the base.
>>
>
> def pwr(base, exponent):
>     ....
>     res = base
>     ...
>
>> User a for-loop with a range of 1 to the exponent.
>>
>
>     for i in range(begin, end):  # The challenge is to pick begin and end.
>
> end will be a function of exponent but not exponent itself.
> I don't think 1 is a good choice for begin.
> Picking the correct begin is related to dealing with the following:
>
> What if any of the following are true, and what should be done in each
> case?
>     if exponent ==1: .....
>     if exponent = 0: .....
>     if exponent < 0: .....
> Each of the first two might deserve its own return statement.
>
>
>> With each iteration, set the result to the product of result times base.
>>
>
>     res *= base  # same as res = res * base
>
>
> It's a fun little exercise- a bit more complex than I initially thought it
> would be.
>