Exercise 12: Prompting People

When you typed raw_input() you were typing the ( and ) characters, which are parenthesis characters. This is similar to when you used them to do a format with extra variables, as in "%s %s" % (x, y). For raw_input you can also put in a prompt to show to a person so he knows what to type. Put a string that you want for the prompt inside the () so that it looks like this:

y = raw_input("Name? ")

This prompts the user with “Name?” and puts the result into the variable y. This is how you ask someone a question and get the answer.

This means we can completely rewrite our previous exercise using just raw_input to do all the prompting.

age = raw_input("How old are you? ")
height = raw_input("How tall are you? ")
weight = raw_input("How much do you weigh? ")

print "So, you're %r old, %r tall and %r heavy." % (
    age, height, weight)

What You Should See

$ python ex12.py
How old are you?  38
How tall are you?  6'2"
How much do you weigh?  180lbs
So, you're '38' old, '6\'2"' tall and '180lbs' heavy.

Study Drills

  1. In Terminal where you normally run python to run your scripts, type pydoc raw_input. Read what it says. If you’re on Windows try python -m pydoc raw_input instead.
  2. Get out of pydoc by typing q to quit.
  3. Look online for what the pydoc command does.
  4. Use pydoc to also read about open, file, os, and sys. It’s alright if you do not understand those; just read through and take notes about interesting things.

Common Student Questions

How come I get SyntaxError: invalid syntax whenever I run pydoc?
You aren’t running pydoc from the command line; you’re probably running it from inside python. Exit out of python first.
Why does my pydoc not pause like yours does?
Sometimes if the help document is short enough to fit on one screen then pydoc will just print it.
When I run pydoc I get more is not recognized as an internal.
Some versions of Windows do not have that command, which means pydoc is broken for you. You can skip this Study Drill and just search online for Python documentation when you need it.
Why would I use %r over %s?
Remember %r is for debugging and is “raw representation” while %s is for display. I will not answer this question again so you must memorize this fact. This is the #1 thing people ask repeatedly, and asking the same question over and over means you aren’t taking the time to memorize what you should. Stop now, and finally memorize this fact.
Why can’t I do print "How old are you?" , raw_input()?
You’d think that’d work, but Python doesn’t recognize that as valid. The only answer I can really give is, you just can’t.