[Tutor] Making a Primary Number List generator
Dave Angel
davea at davea.name
Tue May 14 02:35:01 CEST 2013
On 05/13/2013 07:01 PM, Daniel Magruder wrote:
> Dear Dave,
> I am using python 2.
> I am still confused as what return does. What does it mean if a
> function returns True to the caller? What is the caller?
Have you ever used (called) a function? If so, you've written a caller.
For example, if you want the absolute value of an integer, you might do:
import math
x = float(raw_input("Type an integer"))
y = math.fabs(x) #Here I'm calling the function
print "Absolute value is", y
Now, somewhere in the Python library, a function was defined called
fabs(), and it had a return statement with the value you want.
> Your code worked for returning a list of 1000 items of odd numbers, so I then tried writing a code to replay isodd to give True or False for isprime. However,
>> def isodd(candidate):
>> if candidate%2 ==0:
>> return False
>> else:
>> return True
> The meaning of this I am still confused about. What does it mean if the value is returned as false if it has 0 remainder, what does it mean if it is returned as true? Is this like a dictionary with keys and values?
I don't have a clue what you're confused about. Do you not understand
remainders? If the remainder is 1 then the number is odd, while if the
remainder is 0 then the number is even. That's math, not programming.
> Also, here is my new code, which still does not work. I have no idea why not, and am getting very frustrated by the fact that making a program that determines if a number is prime or not is so hard for me. I would appreciate any assistance, and a verbal walk through of how to logically determine if a number is prime.
>
> def isprime(x):
> test=2
> numberinquestion = x
> while test < numberinquestion:
> if numberinquestion % test == 0:
> test += 1
> return False
> elif numberinquestion / test == int:
Here you go again; int is a type, not a value. Anyway, all the testing
you needed was already done, if there's a nonzero remainder you already
returned a False. If there is a remainder, there's nothing more to test
for this value of 'test'. So increment and loop around.
> test += 1
> return False
> if test == numberinquestion:
This is also unneeded. If the while has finished, then you can return True.
> return True
>
> def counting_primes():
> prime = 2
> primelist=[]
> while len(primelist) < 1000:
> if isprime(prime):
> primelist.append(prime)
> prime += 1
> return primelist
> Sincerely,
> Dan
--
DaveA
More information about the Tutor
mailing list