On 30/03/07, Christopher Spears <[EMAIL PROTECTED]> wrote: > What I can't remember is what is 'or' in python. For > example, what if I want the loop to skip apples and > pears? I tried this: > > >>> for f in fruit: > ... if f != "apples" or "pears": > ... print f > ... print "This is not an apple or pear" > ... > apples > This is not an apple or pear > pears > This is not an apple or pear > oranges > This is not an apple or pear > >>> > > Actually maybe my problem is not asking the right > question? Should I be looking for 'and' instead of > 'or' ?
Hi Christopher, "or" is used to combine two boolean expressions. What you wrote is equivalent to: for f in fruit: if (f != "apples") or ("pears"): # etc So python first checks the truth of (f != "apples"). If this is true, it continues to the body of the if statement. If this is false, python checks the truth of ("pears"). Because "pears" is a nonempty string, it is always true, and so python continues to the body of the if statement anyway. You have a few options to correct your code. Consider the following: for f in fruit: if f == "apples" or f == "pairs": print f, "is an apple or a pair." This will check if f is either "apples" or "pairs". You can then invert that: for f in fruit: if not (f == "apples" or f == "pairs"): print f, "is not an apple or pair." You could then use DeMorgan's law to convert this to: for f in fruit: if f != "apples" and f != "pairs": print f, "is not an apple or pair." Finally, you have one more option, using the "in" operator: for f in fruit: if f not in ["apples", "pairs"]: print f, "is not an apple or pair." HTH! -- John. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor