Hello, so I am starting to learn python on my own learnpython.org and I am currently on the string formatting section and it starts talking about %d and $s. I kinda understand what it does but not really. However my main question is why do we use %s and %d. One example I have seen was
name = 'Geek
print ("Hey, %s,!" % name)
This printed out "Hey, Geek!". But why do we use it when we can also just do
print ("Hey", name)
As I am typing this out I kind of see the use but still any advice would be helpful
Edit: Thanks for all the replies they really helped!! I will be sending in thousands of more questions as I continue to learn.
python - What's the difference between %s and %d in string formatting? - Stack Overflow
%d within print statement python - Stack Overflow
What is the difference between %i and %d in Python? - Stack Overflow
%i insteand of %d in formatting
What does %d mean in Python?
Should I use %d or an f-string?
Why does %d raise a TypeError?
They are used for formatting strings. %s acts a placeholder for a string while %d acts as a placeholder for a number. Their associated values are passed in via a tuple using the % operator.
name = 'marcog'
number = 42
print '%s %d' % (name, number)
will print marcog 42. Note that name is a string (%s) and number is an integer (%d for decimal).
See https://docs.python.org/3/library/stdtypes.html#printf-style-string-formatting for details.
In Python 3 the example would be:
print('%s %d' % (name, number))
from python 3 doc
%d is for decimal integer
%s is for generic string or object and in case of object, it will be converted to string
Consider the following code
name ='giacomo'
number = 4.3
print('%s %s %d %f %g' % (name, number, number, number, number))
the out put will be
giacomo 4.3 4 4.300000 4.3
as you can see %d will truncate to integer, %s will maintain formatting, %f will print as float and %g is used for generic number
obviously
print('%d' % (name))
will generate an exception; you cannot convert string to number
Python copied the C formatting instructions.
For output, %i and %d are the exact same thing, both in Python and in C.
The difference lies in what these do when you use them to parse input, in C by using the scanf() function. See Difference between format specifiers %i and %d in printf.
Python doesn't have a scanf equivalent, but the Python string formatting operations retained the two options to remain compatible with C.
The new str.format() and format() format specification mini-language dropped support for i and stuck with d only.
No difference.
And here's the proof.
The reason why there are two is that, %i is just an alternative to %d ,if you want to look at it at a high level (from python point of view).
Here's what python.org has to say about %i: Signed integer decimal.
And %d: Signed integer decimal.
%d stands for decimal and %i for integer.
but both are same, you can use both.