On 24/08/14 15:11, Mimi Ou Yang wrote:

age = int(input("Enter your age: "))
gb = input("Are you a boy or a girl? ")

input() returns a string so the values here
should be 'boy' or 'girl' - Notice the quote signs.

op = input("How are you feeling today? ")

if (age in (1,2,3,4,5,6,7,8,9,10,11,12)):
     print (name,"you are a little",gb,"that is feeling",op,"today.")

If you are using loing sequences of values you should consider using the range() function instead or use a comparison check:

either

if age in (range(1,13):    # last value not included

or

if 1 <= age <= 12:

Its less typing and easier to see the intention.
For small numbers of values the tuple approach is
fine but once you get more than say, 7 values its
harder to read.

The exception is if you are testing for non
contiguous values, in that case an explicit tuple
will be needed.

if (age in (18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33)) and (gb ==
boy):

Notice that you are testing

.... and (gb == boy):

no quotes so Python looks for a variable called boy.


if (age in (18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33)) and (gb ==
girl):

The same here for girl


(34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56))
and (gb == boy):
NameError: name 'boy' is not defined
 >>>

So use quotes when testing for string values

you might also like to force the input to lowercase so that users can type Boy or BOY if they wish:

.... (gb.lower() == 'boy')

HTH
--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.flickr.com/photos/alangauldphotos

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to