[Tutor] setting variables off the command line

Daniel Yoo dyoo@hkn.EECS.Berkeley.EDU
Thu, 20 Jul 2000 10:20:32 -0700 (PDT)

On Thu, 20 Jul 2000, peter church wrote:

>             I know this is a very simple question to answer but I
> cannot find any example of how it is done in the python docs I have
> also looked in the O'Reilly book as well
>     how do I collect variables from users from within a python program
> i.e
>     print  what is  your name  ?
>     read (name)
>     print hello name !

There are a few ways to do this.  A simple way is to use the raw_input()
function, which will return the string the user enters, up to the newline.  
Your program above would look like:

  print "What is your name?"
  name = raw_input()
  print "Hello %s!" % name

The only thing with raw_input() is that it always returns the string
representation, so if you're doing things with numbers, you'll probably
need to do an int() or a float() on your result.

Another way to do input is with the input() function.  It'll read user
input, and evaluate it --- this takes care of having to worry about
coersing your value into a number, but makes inputting strings weirder:

>>> x = input()
>>> type(x)
<type 'int'>
>>> x
>>> s = input()
"hello world"
>>> s
'hello world'
>>> s = input()
hello world
Traceback (innermost last):
  File "<stdin>", line 1, in ?
  File "<string>", line 1
    hello world
SyntaxError: unexpected EOF while parsing

Notice how inputting a string requires quotes.  However, this does allow
the user to do stuff like

>>> import math
>>> x = input("Enter a math function: ")
>>> x

since it's evaluating what you type in at the input, just as if you had
entered it from the interpreter prompt.