On 2017-03-05 02:24, Peter Otten wrote:
Sri Kavi wrote:

Like I just said in my other message, I was trying to reply to Tasha
Burman, but I was in digest mode and I didn't know how to change my
subscription options in order to reply to individual messages. I also
don't know if it's an assignment, but I'm a beginner learning to program,
too :)

What if any of the following are true, and what should be done in each
case?
  if exponent ==1: .....

New discovery:
This (if exponent ==1) 'special case' ceases to be special if result is set to 1 rather than to base. It also simplifies the parameters to the range function: range(exponent) rather than range(1, exponent).

  if exponent = 0: .....
  if exponent < 0: .....

If the exponent is negative, one need only reset the base to its reciprocal and the the exponent to its absolute value after which the same algorithm does the job. Alternatively you could simply change the exponent to its absolute value and set a flag and at the end change res to its reciprocal if your flag is set- again avoiding having two separate loops.


Here's my implementation.

In Python 3.6.0

def power(base, exponent):
    if exponent == 0:
        return 1
    elif exponent > 0:
        result = base

        for _ in range(1, exponent):
            result *= base

        return result
    else:
        exponent = -exponent
        result = base

        for _ in range(1, exponent):
            result *= base
        return 1 / result

Please share your thoughts.

You can try to simplify that a bit:

- Handle the case with non-negative exponents in one branch
- Avoid duplicating the for loop for negative exponents, e. g. by calling
  power() from within power()
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to