# [Tutor] First program

Steven D'Aprano steve at pearwood.info
Sat Mar 13 04:15:37 CET 2010

On Sat, 13 Mar 2010 01:04:42 pm Ray Parrish wrote:
> >     print "A %s with dimensions %sx%s has an area of %s." %
> > (choice, height, width, width*height)
>
> Hello,
>
> Isn't it a little more understandable to use a
> construct like the following?
>
> >>> print "The area of a " + Choice + "is " str(Width) + " x " +
> str(Height) + " equals " + str(Width * Height) + "
> square feet"
>
> The area of a rectangle is 12 x 10 equals 120
> square feet.
>
> I find that putting the variables on the end like
> that, when you're not actually applying any special formatting to them
> when I'm debugging my stuff, or when someone else
> and trying to understand it.

Of course you are welcome to use whatever coding standards you like, but
I think you will find that among experienced coders, you are in a
vanishingly small minority. As a beginner, I found string interpolation
confusing at first, but it soon became second-nature. And of course,
there are legions of C coders who are used to it.

I find an expression like:

"The area of a " + Choice + "is " str(Width) + " x " + str(Height)
+ "equals " + str(Width * Height) + "square feet"

difficult to follow: too many quotes, too many sub-expressions being
added, too many repeated calls to str(), it isn't clear what is the
template and what is being inserted into the template. It is too easy
to miss a quote and get a SyntaxError, or to forget to add spaces where
needed. To me, this is MUCH easier:

template = "The area of a %s is %s x %s equals %s square feet"
print template % (Width, Height Width*Height)

One pair of quotes instead of five, no problems with remembering to add
spaces around pieces, and no need to explicitly call str().

--
Steven D'Aprano