My backwards logic

Seymore4Head Seymore4Head at Hotmail.invalid
Fri Sep 5 13:44:47 EDT 2014


On Fri, 05 Sep 2014 10:08:18 -0700, Ethan Furman <ethan at stoneleaf.us>
wrote:

>On 09/05/2014 09:48 AM, Seymore4Head wrote:
>> I'm still doing practice problems.  I haven't heard from the library
>> on any of the books I have requested.
>>
>> http://www.practicepython.org/exercise/2014/04/16/11-check-primality-functions.html
>>
>> This is not a hard problem, but it got me to thinking a little.  A
>> prime number will divide by one and itself.  When setting up this
>> loop, if I start at 2 instead of 1, that automatically excludes one of
>> the factors.  Then, by default, Python goes "to" the chosen count and
>> not "through" the count, so just the syntax causes Python to rule out
>> the other factor (the number itself).
>>
>> So this works:
>> while True:
>>      a=random.randrange(1,8)
>>      print (a)
>>      for x in range(2,a):
>>          if a%x==0:
>>              print ("Number is not prime")
>>              break
>>      wait = input (" "*40  + "Wait")
>>
>> But, what this instructions want printed is "This is a prime number"
>> So how to I use this code logic NOT print (not prime) and have the
>> logic print "This number is prime"
>
>Python's 'for' loop has a handy 'else' extension which is perfect for the search-type of 'for' loop:
>
>    while True:
>         a=random.randrange(1,8)
>         print (a)
>         for x in range(2,a):
>             if a%x==0:
>                 print ("Number is not prime")
>                 break
>         else:
>             print ("Number is prime")
>         wait = input (" "*40  + "Wait")
>
>Note the two lines I added after the 'break' and before the 'wait'.

I had already tried this one.
The solution I want should only print:
"This number is prime"

Adding else causes the program to also print "This number is not
prime"

I also tried the flag=True suggestion, but never got one that worked.
I am unsure when to use flag=True and flag==True 
Then there is flag="True" and flag=="True"

What I really wanted was something like:
if !(a%x==0)

BTW since I am getting no grade, I much prefer the answer than a hint.
The best hint IMO is to tell me how you would do it.

Thanks everyone



More information about the Python-list mailing list