> > On Jul 17, 2012, at 10:29 PM, Alexandre Zani wrote: > > > On Tue, Jul 17, 2012 at 10:21 PM, Andre' Walker-Loud > <walksl...@gmail.com> wrote: >> Hi Santosh, >> >> On Jul 17, 2012, at 10:09 PM, Santosh Kumar wrote: >> >>> Here is my script: >>> >>> name = raw_input("What's your name? ") >>> >>> if name == "Santosh": >>> print "Hey!! I have the same name." >>> elif name == "John Cleese" or "Michael Palin": >>> print "I have no preference about your name. Really!!" >>> else: >>> print "You have a nice name." >>> >>> >>> The if part works well. The elif part works well too. The problem is >>> even if you enter strings other than "Santosh", "John Cleese" and >>> "Michael Palin" you still get the print from elif part, not from else >>> part. >> >> you just have to be careful with the multiple boolean line in the elif. You >> can use either >> >> elif name == ("John Cleese" or "Michael Palin"): > > That won't work. > >>>> "John Cleese" == ("John Cleese" or "Michael Palin") > True >>>> "Michael Palin" == ("John Cleese" or "Michael Palin") > False >>>> ("John Cleese" or "Michael Palin") > 'John Cleese' > > Python will look at the expression ("John Cleese" or "Michael Palin") > since bool("John Cleese") is True, the expression immediately > evaluates to "John Cleese" and the elif clause becomes equivalent to > name == "John Cleese"
thanks - I fell into the same trap! I tried it in my terminal but it worked for the same reason as the OP. Andre _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor