[Tutor] [Re:] I need help with the following question

Oscar Benjamin oscar.j.benjamin at gmail.com
Wed Sep 11 12:15:26 CEST 2013


I'm resending this to the list. Please reply to the tutor list rather
than directly to me. Also please don't top-post. My answer is below.

On 11 September 2013 10:47, Thabile Rampa <thabilerampa at gmail.com> wrote:
>
> On Tue, Sep 10, 2013 at 11:57 AM, Oscar Benjamin <oscar.j.benjamin at gmail.com> wrote:
>>
>> On 10 September 2013 08:58, Thabile Rampa <thabilerampa at gmail.com> wrote:
>> > On Aug 27, 2013, at 3:40 AM, isaac Eric wrote
>> >
>> > According to my understanding, the purpose of the %s is to turn the numbers,
>> > which the program has recognized as numbers, into strings, so that they fit
>> > in the print command without any syntax errors.
>> >
>>
>> You are correct. '%s' is used to convert numbers (or other non-string
>> things) into strings so that they can be used in places where text is
>> required. In the particular case of the print command, this is done
>> automatically so printing a number directly works just fine:
>>
> Wow! Thanks so much guy!
>
> The last two paragraphs especially made it a lot easier to understand! but why are there so many ways to achieve one goal in Python?

The str() function is the default way to convert an object to a
string. The print statement uses this implicitly if you try to print
something that is not a string which is convenient for simple output.
The % formatting codes allow for more advanced usage (see below) but
%s is just for the specific case where you want to convert each object
using str(). Here's how you can use % formatting to represent the same
number in different ways:

>>> radius = 12.3456789
>>> radius
12.3456789
>>> print 'radius =', radius
radius = 12.3456789
>>> print 'radius = %s' % radius
radius = 12.3456789
>>> print 'radius = %.3f' % radius
radius = 12.346
>>> print 'radius = %.5f' % radius
radius = 12.34568
>>> print 'radius = %.5e' % radius
radius = 1.23457e+01

There is also the .format method. This was initially intended to
replace % formatting but it was ultimately decided that removing %
formatting was not necessary. Consequently there are now two ways of
doing advanced string formatting in Python.


Oscar


More information about the Tutor mailing list