[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.
>
> Please share your implementation.
>


More information about the Tutor mailing list