(You forgot to post your response on the list, instead posting it privately to me. Please use Reply-All, or whatever the equivalent is on your email app)

On 12/01/2011 11:49 AM, Michael Hall wrote:
On Thu, Dec 1, 2011 at 7:51 AM, Dave Angel<d...@davea.name>  wrote:

  On 12/01/2011 10:33 AM, Michael Hall wrote:

Here is the code I have written.

# Create main function.
def main():
     a = input('Please Enter a Number: ') # Ask user for input.
     number = int(a)
     x = 1
     sum_of = 0
     while number>   x:
         if number % x == 0:
             sum_of = sum_of + x
         x += 1
     if sum_of == number:
        print(number,'is a Perfect Number')
     elif sum_of<   number:
        print(number,'is a Non-perfect Number')

main()

Here is the problem I am having. The program works perfect but I need to
add the following:

# a) write a function, getDivisors(), that returns a list of all
# of the positive divisors of a given number. for example -
# result = getDivisors(24)
# print(result)
# would yield: "[ 1, 2, 3, 4, 6, 8, 12]"
# b) write a program that uses your function to determine which
# numbers between 1 and 10,000 are perfect. (answer: 6, 28, 496
# and 8128 are perfect!)

I know that mystring needs to be added. I need help
Thank you in advance

I don't see any 'mystring' in the source or in the assignment;   why
would you think you need it?

It asks you to write a function called getDivisors().  You have all the
pieces in your present code, but it's all inline.  Probably your professor
wants you to learn to code in small functions, so your code is more likely
to be reusable.

So what part of the function description is unclear?  And is it unclear
because you don' t understand one of the math terms, or because you don't
know how to code it?    She wants a function that takes a single argument
(number), and returns a list

def getDivisors(number):
       do some stuff
       return mylist

You'll probably want to write another one that adds up the elements of a
list (or you could find it in the stdlib).  Then your main should be pretty
straightforward.



--

Dave


A

The truth is I am unsure how to code it. Here is my guess:

def main():
     a = input('Please Enter a Number: ') # Ask user for input.
     number = int(a)
     x = 1
     sum_of = 0
     while number>  x:
         if number % x == 0:
             sum_of = sum_of + x
         x += 1
     if sum_of == number:
        print(number,'is a Perfect Number')
     elif sum_of<  number:
        print(number,'is a Non-perfect Number')
def getDivisors(number):
            while count != num:
         if (num % count) != 0:
             mylist.append(count)
             count +=1
         else:
             count +=1
     print(mylist)


main()


YES, I DO NOT UNDERSTAND HOW OR WHERE TO PUT THE CODE.
THANK YOU FOR YOUR HELP.


You want a separate function, so don't try to put it in the middle of the present one. Put the def *after* the print(mylist) line.

All you can take from the older function is ideas. Since you wrote it, you must know how to write the new one. The task is much simpler, and is a subset of the task the first one did.

You're going to need some form of loop. Figure out what the limits are and see if you can figure out some way to do a for loop between those limits. The work of the loop body will be done by the same
      if number % x == 0:

that you had before, but you do something different than what you did before. Your job is to build a list.

Note to others: Don't confuse the issue with efficiency, nor with some library code. This is a homework assignment, and it has to be done with concepts the OP already has been taught.

--

DaveA
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to