[EMAIL PROTECTED] wrote:

>
>I've not used .any or .all, but having just taught my CS1 students about 
>boolean operators, I was reminded that Python works as the following example 
>describes:
>
>x = a and b
># if both a and b are true, x is assigned b, otherwise x is assigned a
>x = 2 and 3 # x is assigned 3
>x = 0 and 2 # x is assigned 0
>
>x = a or b
># if a is true, x is assigned a, if a is true, x is assigned a, if a is false 
>and b is true, x is assigned b, if both a and b are false, x is assigned False
>
>You need to determine what should make vertex_map[tp] be true...
>
thanks, but having some trouble:

 >>> import Numeric as N
 >>> a=N.array([0,0,0])
 >>> b=N.array([0,0,1])
 >>> a and b
array([0, 0, 0])
 >>> b and  a
array([0, 0, 0])

Can this be?  Either both a and b are true, or they are not,  so can it 
be returning the "a" in both cases? Something screwy, other than my 
comprehension here?

Same problem with

 >>> a or b
array([0, 0, 1])
 >>> b or a
array([0, 0, 1])

OTOH, this makes sense to me - with "0" being False

 >>> any(a)
False
 >>> all(a)
False
 >>> any(b)
True
 >>> all(b)
False

Though anyone growing up with the Python boolean operator might wonder 
why it is as it is - i.e. when 0 was the way to spell False this 
behavior is fairly well expected.  Now that False is spelled "False", 
having "0" any less true than "1", when thinks one is dealing with 
numbers as numbers, is likely to catch the less geeky unaware, IMO.

Art



_______________________________________________
Edu-sig mailing list
Edu-sig@python.org
http://mail.python.org/mailman/listinfo/edu-sig

Reply via email to