usuario1985351
Esto es solo un fragmento de mi código:
print("Total score for %s is %s ", name, score)
Pero quiero que se imprima:
“La puntuación total de (nombre) es (puntuación)”
dónde name
es una variable en una lista y score
es un número entero. Esto es Python 3.3 si eso ayuda en algo.
Licuadora
Hay muchas maneras de hacer esto. Para arreglar su código actual usando %
-formato, necesitas 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 estilo nuevo, que podría ser un poco más fácil de leer:
-
Use el formato de cadena de estilo nuevo:
print("Total score for {} is {}".format(name, score))
-
Use el 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))
-
Use formato de cadena de estilo nuevo 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 por
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
-
Usa el nuevo
f
-formato de cadena en Python 3.6:print(f'Total score for {name} is {score}')
-
por supuesto, siempre existe el antiguo método desaprobado:
print("Total score for "+str(name)"+ is "+str(score))
– Serpientes y Café
8 de marzo de 2013 a las 4:46
-
@SnakesandCoffee: Simplemente haría
print("Total score for", name, "is", score)
– Licuadora
8 de marzo de 2013 a las 4:47
-
Mi +1. En estos días prefiero el
.format()
como más legible que el anterior% (tuple)
— a pesar de que he visto pruebas que muestran la%
la interpolación es más rápida. Élprint('xxx', a, 'yyy', b)
también está bien para casos simples. Recomiendo también para aprender.format_map()
con diccionario como argumento, y con'ssss {key1} xxx {key2}'
— agradable para generar textos a partir de plantillas. También está el mayorstring_template % dictionary
. Pero las plantillas no se ven tan limpias:'ssss %(key1)s xxx %(key2)s'
.– pimienta
8 de marzo de 2013 a las 13:15
-
FYI, a partir de Python 3.6, obtenemos cuerdas fpor lo que ahora también puedes hacer
print(f"Total score for {name} is {score}")
sin llamadas a funciones explícitas (siempre y cuandoname
yscore
están en el alcance obviamente).– ShadowRanger
7 de diciembre de 2016 a las 1:41
-
@SnakesandCoffee ¿Por qué es
print("Total score for "+str(name)"+ is "+str(score))
desaprobado?– el hombre de las preguntas
4 de noviembre de 2020 a las 0:42
Vikas Gupta
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}')
-
El primer comentario (
#Normal string concatenation
) es al menos engañoso.– Lobo
19 de mayo de 2021 a las 14:26
Gabriel Cohen
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
formateo desde Pitón 3.6:
print(f'Total score for {name} is {score}')
Puedo usar repr
y automáticamente el ''
está agregado:
print("Total score for" + repr(name) + " is " + repr(score))
# or for advanced:
print(f'Total score for {name!r} is {score!r}')
Abhishek
En Python 3.6, f-string
es mucho más limpio.
En la versión anterior:
print("Total score for %s is %s. " % (name, score))
En Pitón 3.6:
print(f'Total score for {name} is {score}.')
servirá.
Es más eficiente y elegante.
Manteniéndolo simple, personalmente me gusta la concatenación de cadenas:
print("Total score for " + name + " is " + score)
Funciona con Python 2.7 y 3.X.
NOTA: Si la puntuación es un En tentonces, deberías convertirlo a calle:
print("Total score for " + name + " is " + str(score))
Lobo
solo sigue esto
grade = "the biggest idiot"
year = 22
print("I have been {} for {} years.".format(grade, year))
O
grade = "the biggest idiot"
year = 22
print("I have been %s for %s years." % (grade, year))
Y olvídese de todos los demás, de lo contrario el cerebro no podrá mapear todos los formatos.
Pedro Mortensen
Sólo inténtalo:
print("Total score for", name, "is", score)