This is just a snippet of my code:
print["Total score for %s is %s ", name, score]
But I want it to print out:
"Total score for [name] is [score]"
where name
is a variable in a list and score
is an integer. This is Python 3.3 if that helps at all.
asked Mar 8, 2013 at 3:51
0
There are many ways to do this. To fix your current code using %
-formatting, you need to pass in a tuple:
Pass it as a tuple:
print["Total score for %s is %s" % [name, score]]
A tuple with a single element looks like ['this',]
.
Here are some other common ways of doing it:
Pass it as a dictionary:
print["Total score for %[n]s is %[s]s" % {'n': name, 's': score}]
There's also new-style string formatting, which might be a little easier to read:
Use new-style string formatting:
print["Total score for {} is {}".format[name, score]]
Use new-style string formatting with numbers [useful for reordering or printing the same one multiple times]:
print["Total score for {0} is {1}".format[name, score]]
Use new-style string formatting with explicit names:
print["Total score for {n} is {s}".format[n=name, s=score]]
Concatenate strings:
print["Total score for " + str[name] + " is " + str[score]]
The clearest two, in my opinion:
Just pass the values as parameters:
print["Total score for", name, "is", score]
If you don't want spaces to be inserted automatically by
print
in the above example, change thesep
parameter:print["Total score for ", name, " is ", score, sep='']
If you're using Python 2, won't be able to use the last two because
print
isn't a function in Python 2. You can, however, import this behavior from__future__
:from __future__ import print_function
Use the new
f
-string formatting in Python 3.6:print[f'Total score for {name} is {score}']
answered Mar 8, 2013 at 3:52
BlenderBlender
280k52 gold badges426 silver badges487 bronze badges
7
There are many ways to print that.
Let's have a look with another example.
a = 10
b = 20
c = a + b
#Normal string concatenation
print["sum of", a , "and" , b , "is" , c]
#convert variable into str
print["sum of " + str[a] + " and " + str[b] + " is " + str[c]]
# if you want to print in tuple way
print["Sum of %s and %s is %s: " %[a,b,c]]
#New style string formatting
print["sum of {} and {} is {}".format[a,b,c]]
#in case you want to use repr[]
print["sum of " + repr[a] + " and " + repr[b] + " is " + repr[c]]
EDIT :
#New f-string formatting from Python 3.6:
print[f'Sum of {a} and {b} is {c}']
answered Aug 11, 2016 at 13:07
Vikas GuptaVikas Gupta
10.3k4 gold badges30 silver badges42 bronze badges
1
Use:
.format[]
:
print["Total score for {0} is {1}".format[name, score]]
Or:
// Recommended, more readable code
print["Total score for {n} is {s}".format[n=name, s=score]]
Or:
print["Total score for" + name + " is " + score]
Or:
print["Total score for %s is %d" % [name, score]]
Or: f-string
formatting from Python 3.6:
print[f'Total score for {name} is {score}']
Can use repr
and automatically the ''
is added:
print["Total score for" + repr[name] + " is " + repr[score]]
# or for advanced:
print[f'Total score for {name!r} is {score!r}']
answered Jan 18, 2018 at 11:23
In Python 3.6, f-string
is much cleaner.
In earlier version:
print["Total score for %s is %s. " % [name, score]]
In Python 3.6:
print[f'Total score for {name} is {score}.']
will do.
It is more efficient and elegant.
answered May 23, 2017 at 10:09
AbhishekAbhishek
4735 silver badges17 bronze badges
Keeping it simple, I personally like string concatenation:
print["Total score for " + name + " is " + score]
It works with both Python 2.7 an 3.X.
NOTE: If score is an int, then, you should convert it to str:
print["Total score for " + name + " is " + str[score]]
answered Apr 1, 2015 at 20:57
Paolo RovelliPaolo Rovelli
9,0402 gold badges56 silver badges37 bronze badges
Just follow this
grade = "the biggest idiot"
year = 22
print["I have been {} for {} years.".format[grade, year]]
OR
grade = "the biggest idiot"
year = 22
print["I have been %s for %s years." % [grade, year]]
And forget all others, else the brain won't be able to map all the formats.
Wolf
9,3847 gold badges59 silver badges102 bronze badges
answered Sep 22, 2017 at 7:11
TheExorcistTheExorcist
1,9091 gold badge18 silver badges25 bronze badges
1
Just try:
print["Total score for", name, "is", score]
answered Jul 30, 2014 at 5:00
sarorasarora
5041 gold badge6 silver badges10 bronze badges
Use f-string
:
print[f'Total score for {name} is {score}']
Or
Use .format
:
print["Total score for {} is {}".format[name, score]]
answered Jul 7, 2018 at 6:08
M.InnatM.Innat
13.9k6 gold badges43 silver badges78 bronze badges
2
print["Total score for %s is %s " % [name, score]]
%s
can be replace by %d
or %f
strickt01
3,8591 gold badge14 silver badges31 bronze badges
answered Mar 3, 2016 at 16:51
If score
is a number, then
print["Total score for %s is %d" % [name, score]]
If score is a string, then
print["Total score for %s is %s" % [name, score]]
If score is a number, then it's %d
, if it's a string, then it's %s
, if score is a float, then it's %f
answered Jul 11, 2016 at 19:53
SupercolbatSupercolbat
3111 gold badge8 silver badges18 bronze badges
This is what I do:
print["Total score for " + name + " is " + score]
Remember to put a space after
for
and before and after is
.
answered Dec 21, 2015 at 9:51
The easiest way is as follows
print[f"Total score for {name} is {score}"]
Just put an "f" in front.
answered Feb 14 at 16:35
This was probably a casting issue
. Casting syntax
happens when you try to combine two different
types of variables
. Since we cannot convert a string
to an integer
or float
always, we have to convert our integers
into a string
. This is how you do it.: str[x]
. To convert to a integer, it's: int[x]
, and a float is float[x]
. Our code will be:
print['Total score for ' + str[name] + ' is ' + str[score]]
Also! Run this snippet
to see a table of how to convert different types of variables
!
Booleans
bool[]
Dictionaries
dict[]
Floats
float[]
Integers
int[]
Lists
list[]
answered Jan 1, 2021 at 21:57