¿Cómo puedo imprimir varias cosas (texto fijo y/o valores variables) en la misma línea, todas a la vez?
Tengo un código como:
score = 100
name = 'Alice'
print('Total score for %s is %s', name, score)
Quiero que se imprima Total score for Alice is 100
, pero en lugar de eso aparece Total score for %s is %s Alice 100
. ¿Cómo puedo hacer que todo se imprima en el orden correcto y con el formato correcto?
Ver también: ¿Cómo puedo imprimir varias cosas en la misma línea, una a la vez? ; ¿Cómo pongo el valor de una variable dentro de una cadena (lo interpola en la cadena)?
Hay muchas maneras de hacer esto. Para corregir su código actual usando %
el formato, debe pasar una tupla:
Pásalo como una tupla:
print("Total score for %s is %s" % (name, score))
Una tupla con un solo elemento parece ('this',)
.
Aquí hay algunas otras formas comunes de hacerlo:
Pásalo como diccionario:
print("Total score for %(n)s is %(s)s" % {'n': name, 's': score})
También hay un formato de cadena de nuevo estilo, que podría ser un poco más fácil de leer:
Utilice formato de cadena de nuevo estilo:
print("Total score for {} is {}".format(name, score))
Utilice un formato de cadena de nuevo estilo con números (útil para reordenar o imprimir el mismo varias veces):
print("Total score for {0} is {1}".format(name, score))
Utilice formato de cadena de nuevo estilo con nombres explícitos:
print("Total score for {n} is {s}".format(n=name, s=score))
Concatenar cadenas:
print("Total score for " + str(name) + " is " + str(score))
Los dos más claros, en mi opinión:
Simplemente pase los valores como parámetros:
print("Total score for", name, "is", score)
Si no desea que los espacios se inserten automáticamente
print
en el ejemplo anterior, cambie elsep
parámetro:print("Total score for ", name, " is ", score, sep='')
Si está usando Python 2, no podrá usar los dos últimos porque
print
no es una función en Python 2. Sin embargo, puede importar este comportamiento desde__future__
:from __future__ import print_function
Utilice el nuevo
f
formato -string en Python 3.6:print(f'Total score for {name} is {score}')
Hay muchas maneras de imprimir eso.
Echemos un vistazo con otro ejemplo.
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}')
Usar: .format()
:
print("Total score for {0} is {1}".format(name, score))
O:
// Recommended, more readable code
print("Total score for {n} is {s}".format(n=name, s=score))
O:
print("Total score for" + name + " is " + score)
O:
print("Total score for %s is %d" % (name, score))
O: f-string
formateando desde Python 3.6 :
print(f'Total score for {name} is {score}')
Se puede usar repr
y automáticamente se ''
agrega:
print("Total score for" + repr(name) + " is " + repr(score))
# or for advanced:
print(f'Total score for {name!r} is {score!r}')