[Tutor] Need help adding a funcation
Michael Hall
michael.hall5447 at gmail.com
Fri Dec 2 08:22:07 CET 2011
I am still not understanding what it is I am being asked to do. What is the
differance between my_list = [] an my_list[ ] because when I use my_list[]
I get an error. Not sure what I am doing wrong. I am asking if you are
given the following question how would you write the program. I have most
of it. Here is what I know works
# Create main function.
def main():
a = input('Please Enter a Number: ') # Ask user for input.
number = int(a)
x = 1
sum_of = 0
getDivisors
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(num):
sum = 0
x = 1
#my_list[] = num
for num in range(1, num, 1):
if num % x == 0:
print(num)
sum += num
print('The sum is ', sum)
if sum == num:
print(num, 'is a perfect number')
else:
print(num, 'is not a perfect number')
main()
This is what the teacher is asking for:
# 1) a perfect number is a positive integer that is equal to the
# sum of its proper positive divisors,excluding the number itself.
# for example, 6 is a perfect number because it is evenly divisible
# by 1, 2 and 3 - all of it's divisors - and the sum 1 + 2 + 3 = 6.
# 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 am asking for help writing it. I am new to programming. Lost alot of
brain matter.
On Thu, Dec 1, 2011 at 3:22 PM, Alan Gauld <alan.gauld at btinternet.com>wrote:
> On 01/12/11 21:17, Michael Hall wrote:
>
>> Can anyone else help with this question?
>>
>
> Sure lots of us could help. But Dave's doing a good job
> leading you in the right direction.
>
> Is there something that you don't understand? If you ask about specific
> points we can give specific answers. Meantime I'll add a few extra comments
> to see if that helps...
>
>
> def main():
>> x = 1
>>
>> num = int(input('Please Enter a Number: '))
>> getDivisors(num)
>>
>>
>> You'll want to store the return value of getDivisors, since you have
>> more work to do there.
>>
>
> What Dave means is that you are simply calling the function but not
> storing the result. So you calculate the divisors but then have no chance
> to use them. You need to store them in a variable someplace.
> Think about the input() function you use above.
>
> If you had just done
>
>
> int(input('Please Enter a Number: '))
>
> You couldn't use the value that the user entered.
> You had to assign it to num to do that. It's the same
> with your function getDivisors()
>
>
> def getDivisors(num):
>> sum = 0
>> x = 1
>> #my_list[] = num
>>
>> That's close. To create an empty list, simply do
>> my_list = []
>>
>
> self explanatory, I hope.
>
>
>
> for num in range(1, num, 1):
>>
>> if num % x == 0:
>> print(num)
>> sum += num
>>
>> Why are you summing it? That was in another function. In this one,
>> you're trying to build a list. Any ideas how to do that at this
>> point in the function?
>>
>
> So you need to store your results as a list not as a number. So instead of
> sum() what can you do to my_list to add a new element?
> If you aren't sure fire up the Python >>> prompt and try
> help(list) or just help([]) and see if you can see anything useful.
>
>
> print('The sum is ', sum)
>> if sum == num:
>> print(num, 'is a perfect number')
>> else:
>> print(num, 'is not a perfect number')
>>
>> None of these lines belong in your function. All it's supposed to
>> do is get the divisors, not to study them in any way.
>>
>
> This is a good principle to apply when writing functions. Separate out the
> display from the logic. That way you can use the results of the logic with
> any kind of user interface - GUI, Web, or command line, or even in a server
> process without a UI.
>
> But this takes us back to the advice to assign the result to a variable in
> main().
>
> To do that you need to return a result. And in this case your result
> should be a list of numbers. then you can do any printing in the main
> function.
>
> HTH,
>
> --
> Alan G
> Author of the Learn to Program web site
> http://www.alan-g.me.uk/
>
> ______________________________**_________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/**mailman/listinfo/tutor<http://mail.python.org/mailman/listinfo/tutor>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20111201/c2518e04/attachment.html>
More information about the Tutor
mailing list