The following article will cover points like % operator, string formatting, and most importantly, focus on the %d usage in Python.
Do you have some experience with the C or Pearl language? If yes, you would have worked with the format specifier like %d, %s, %f, etc., in the printf function. Similar to C, Python too can mimic this ancient functionality, using the ‘ % ‘ operator. Also known as string formatting or string modulo or interpolation operator. As it interpolates various class types into a formatted string.
There are better alternatives to it, for instance, the format method and f-strings. However, string formatting is widely used and is still a part of python3. It is likely the % operator will get discontinued from the upcoming python versions. Hence you should prefer the f-strings or format method. With this in mind and for the sake of knowledge, we will discuss it. Read more here.
How to use %d in Python
%d acts as a placeholder for the digits. Similarly, %s and %f act like placeholders for the strings and the floating-point values. Let’s understand how we can use %d in Python with some examples.
Using %d for formatting strings in Python
a = 10
b = 11
c = a + b
print("%d + %d = %d" % (a,b,c))
Using %d in a loop
num_range = int(input("Enter a number:"))
for i in range(num_range):
print("%d" %(i**2),end=", ")
Alternatives
Better alternatives to string formatting are the format method and f-strings. Let’s look at how we can use them. For instance.
Formatting strings using f-strings
Example 1:
a = 10
b = 11
c = a + b
# using f-strings
print(f"{a} + {b} = {c}")
In the above code, we add two numbers, store the result in the third variable, and later print all the values together using the f-strings.
Example 2:
number, count = 5, 0
while count < number:
print(f"Count: {count}")
count += 1
The above example code prints the formatted string with an increasing value of count till the number.
Formatting strings using the str.format method
Example 1:
a = 10
b = 11
c = a + b
# usign format method
print("{0} + {1} = {2}".format(a, b, c))
In the above code, we add two numbers, store the result in the third variable, and later print all the values together using the format method of the str class. Here, 0, 1 & 2 represent values of a, b, c respectively.
Example 2:
number, count = 0, 5
while count > number:
print("Count: {}".format(count))
count -= 1
The above example code prints the formatted string with decreasing value of count till the number.
Difference between %s and %d
The %s is used for interpolating strings, while %d is used for integers. %s does string conversion before formatting. At the same time, %d does decimal conversion before formatting the strings.
Let’s take examples to clear our point.
%s
string1 = "You’re you, you see,"
string2 = " and nobody else. "
string3 = "You are you, right?"
print('%s%s%s' %(string1,string2,string3))
Recommended Reading | Demystifying the Secrets of Python %s
%d
birthyear = int(input("Enter birth year:"))
print("You're %d years old." %(2022-birthyear))
Template strings instead of %d
Python has another tool in its belt named template strings which is less powerful than its counterparts.
from string import Template
temp = Template('Hello, $name!')
print(temp.substitute(name = 'Kisuke'))
FAQs
%d acts as a placeholder for the digits. Similarly, %s and %f act like placeholders for the strings and the floating-point values.
You can use string formatting in Python. For instance:print("Income :$%d" %(10000))
Output: Income: $10000
Regex used ‘ \d ‘ for matching values from 0-9. It serves an entirely different purpose compared to string formatting’s %d.
Conclusion
% operator in Python is a relic of the past, in other words. There are better alternatives. For instance, f-strings and format methods are more readable and more pythonic. However, the % operator played a vital role once.