user732362
user732362

Reputation: 405

printing variables in python using % and variable name

I am currently learning python and would like to know how these two print statements are different? I mean both perform the same action but only differ in the syntax. Are there any other differences?

a = 5
b = 'hi'

print "The number is", a, " and the text is", b

print "The number is %d and the text is %s" %(a, b)

Upvotes: 0

Views: 443

Answers (1)

Elias Dorneles
Elias Dorneles

Reputation: 23896

Well, the second one will fail if the variable a is not a number.

>>> a='hi'
>>> b='hi'
>>> print "The number is %d and the text is %s" %(a, b)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-3-aa94a92667a1> in <module>()
----> 1 print "The number is %d and the text is %s" %(a, b)

TypeError: %d format: a number is required, not str

If a is always a number, they would behave very much alike, except the %d in the format forces it to be an integer, so if you have:

>>> a=1.2
>>> b='hi'
>>> print "The number is %d and the text is %s" %(a, b)
The number is 1 and the text is hi

You can see that it converts the number 1.2 to an integer 1.

As per the comments, another option is to use the format function, that behaves similar to your first option but using a format string:

>>> a=1.2
>>> b='hi'
>>> print "The number is {} and the text is {}".format(a, b)
The number is 1.2 and the text is hi

It also allows to use named arguments:

>>> print "The number is {number} and the text is {text}".format(number=a, text=b)
The number is 1.2 and the text is hi

Upvotes: 2

Related Questions