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 <aklei...@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. > _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor