salto - Imprimir mĂșltiples argumentos en Python
parametros por linea de comandos python (11)
Esto es sólo un fragmento de mi código:
print("Total score for %s is %s ", name, score)
Pero quiero que se imprima:
"La puntuación total para (nombre) es (puntuación)"
donde name
es una variable en una lista y score
es un número entero. Esto es Python 3.3 si eso ayuda en absoluto.
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 Python 3.6:
print(f''Total score for {name} is {score}.'')
haré
Es más eficiente y elegante.
Esto es lo que hago:
print("Total score for " + name + " is " + score)
Recuerda poner un espacio después for
antes y después y después.
Hay muchas maneras de hacer esto. Para corregir su código actual usando %
-formatatting, necesita pasar una tupla:
Pásalo como una tupla:
print("Total score for %s is %s" % (name, score))
Una tupla con un solo elemento se parece a (''this'',)
.
Aquí hay algunas otras formas comunes de hacerlo:
Pásalo como un 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:
Utilice el formato de cadena de nuevo estilo:
print("Total score for {} is {}".format(name, score))
Use el formato de cadena de estilo nuevo con números (útil para reordenar o imprimir el mismo varias veces):
print("Total score for {0} is {1}".format(name, score))
Utilice el formato de cadena de estilo nuevo con nombres explícitos:
print("Total score for {n} is {s}".format(n=name, s=score))
Cuerdas de concatenación:
print("Total score for " + str(name) + " is " + str(score))
Los dos más claros, en mi opinión:
Solo pasa 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 el parámetrosep
:print("Total score for ", name, " is ", score, sep='''')
Si está usando Python 2, no podrá usar los dos últimos porque la
print
no es una función en Python 2. Sin embargo, puede importar este comportamiento desde__future__
:from __future__ import print_function
Use el nuevo formato de cadena de caracteres 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}'')
Manteniéndolo simple, personalmente me gusta la concatenación de cuerdas:
print("Total score for " + name + " is " + score)
Funciona tanto con Python 2.7 como con 3.X.
NOTA: Si la puntuación es un int , entonces, debe convertirlo a str :
print("Total score for " + name + " is " + str(score))
Sólo inténtalo:
print("Total score for", name, "is", score)
Si la score
es un número, entonces
print("Total score for %s is %d" % (name, score))
Si la puntuación es una cadena, entonces
print("Total score for %s is %s" % (name, score))
Si la puntuación es un número, entonces es %d
, si es una cadena, entonces es %s
, si la puntuación es una flotación, entonces es %f
Solo sigue esto
idiot_type = "the biggest idiot"
year = 22
print("I have been {} for {} years ".format(idiot_type, years))
O
idiot_type = "the biggest idiot"
year = 22
print("I have been %s for %s years."% (idiot_type, year))
Y olvídate de todos los demás, de lo contrario el cerebro no podrá mapear todos los formatos.
Utilice .format
:
print("Total score for {0} is {1}".format(name, score))
O:
print("Total score for {n} is {s}".format(n=name, s=score))
O:
print("Total score for" + name + " is " + score)
Utilice f-string
:
print(f''Total score for {name} is {score}'')
O
Utilice .format
:
print("Total score for {} is {}".format(name, score))
print("Total score for %s is %s " % (name, score))
%s
puede ser reemplazado por %d
o %f