On 29May2015 18:48, alan.ga...@btinternet.com <alan.ga...@btinternet.com> wrote:
On 29/05/15 16:28, Mirage Web Studio wrote:
def IsDivisibleBy3(number):#string variable
v=0
for c in number:
v=v+int(c)
if v%3==0:
return True
else:
return False
def IsDivisibleBy3(number):#string variable
return not int(number) % 3
To illustrate that there isn't just One Right Way, I would code the above like
this:
def IsDivisibleBy3(number): #string variable
return int(number) % 3 == 0
Alan's code relies on "not" using an expressions "nonzero"ness as a boolean
value. I _much_ prefer to directly state the test instead of relying on magic
numeric=>boolean effects.
The only other remark I would make is that it is probably a ba idea to write
this function to take a string. It expresses a numerics test - make it take a
number! Do the string conversion-to-int outside the function before it is
called.
def IsDivisibleBy7(number):#string variable
See above, but maybe better still
def isDivisibleByN(number, N):
return not int(number)%N
Indeed, but again I would write an outright numeric expression and not rely on
"not(numeric-expression)".
def IsPrime(number):
Google for the "sieve of eratosthenes"
Or look it up on wikipedia.
That will give one of several possible
improvements to your algorithm.
Plus, it is incredibly easy to code the SoE in Python. So easy that I once did
it in about a minute in a Code Wars session. It is a lovely algorithm which is
easy to remember.
primelist=[]
for i in range (11,200000,2):
number=str(i)
print "checking ",i
if IsPrime(number):
Note, you are starting with a number, then converting
it to a string then in your functions converting it
back to a number.
That's crazy!
Indeed! Numbers throughout if at all possible.
Cheers,
Cameron Simpson <c...@zip.com.au>
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor