[Tutor] (no subject)
Lie Ryan
lie.1296 at gmail.com
Sat Dec 19 16:13:21 CET 2009
On 12/19/2009 11:34 PM, Richard Hultgren wrote:
> Hello,
> I am a newcomer, I guess I'm have trouble thinking like a computer yet.
> My question is:
> in this program:
>
>>>> resp = raw_input("What's your name? ")
>
> >>> print "Hi, %s, nice to meet you" % resp
>
> does %s mean 'place the user response here'
No. %s means "call str() on the {first|second|third|etc} element of the
tuple on the right-hand side of % operator, and put it in here".
The str type overloads %-operator to mean "string interpolation".
Basically what it does is this:
>>> a = 1
>>> b = 2
>>> c = 4
>>> '%s %s %s' % (a, b, c)
'1 2 4'
but for convenience, if the right-hand side of the %-operator contains a
non-tuple argument, then it will just call str() on the right-hand
argument and put it in place of the %s.
>>> nottuple = 10
>>> 'hello %s world' % nottuple
'hello 10 world'
you may learn that instead of tuple, you can also use dict with %(name)s:
>>> '%(a)s %(foo)s' % {'a': 'hello', 'foo': 'world'}
'hello world'
and you may also learn later that instead of 's', you can also use other
format codes like %f, %d, %x, %o. You can read more here:
http://www.python.org/doc/2.5.2/lib/typesseq-strings.html
btw, you should also know that the recommended way to interpolate string
is to use the new '{0} {1} {2}'.format(a, b, c)
> and secondly what and why do
> I put % resp at the end of the print statement? I know this is very
> basic and future questiions will be more interesting I hope.
because python doesn't magically knows what string you want to put in
place of %s. You need to specify that you want to put the value of
`resp` in place of '%s'
More information about the Tutor
mailing list