On Monday 30 October 2006 10:49 am, Arthur wrote: > [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])
This tells me that a zero array is being treated as False (the logical extension to arrays of 0 being false. > > >>> b and a > > array([0, 0, 0]) Right. In both cases, the answer is False, which Python gives to you by handing you the first False expression. In either case the false part of the and is the 0 array, while the other is True (a non-zero array). You can check this out: >>> not(a) True >>> not(b) False > > 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? Because a is False ;-). They're not both true. > Same problem with > > >>> a or b > > array([0, 0, 1]) > > >>> b or a > > array([0, 0, 1]) > This works the same way, but returns the first True expression as the value of "True." > >>> 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. This is why in teaching I prefer to use explicit tests: if x != 0: do something Rather than if x: do something --John -- John M. Zelle, Ph.D. Wartburg College Professor of Computer Science Waverly, IA [EMAIL PROTECTED] (319) 352-8360 _______________________________________________ Edu-sig mailing list Edu-sig@python.org http://mail.python.org/mailman/listinfo/edu-sig