2010-11-26 18 views

Respuesta

121

Se utilizan para formatear cadenas. %s actúa como un marcador de posición para una cadena, mientras que %d actúa como marcador de posición para un número. Sus valores asociados se pasan a través de una tupla usando el operador %.

name = 'marcog' 
number = 42 
print '%s %d' % (name, number) 

imprimirá marcog 42. Tenga en cuenta que el nombre es una cadena (% s) y el número es un número entero (% d para el decimal).

Ver http://docs.python.org/library/stdtypes.html#string-formatting-operations para más detalles.

En Python 3 del ejemplo sería:

print('%s %d' % (name, number)) 
+1

¿Cómo sería la sintaxis para parecerse a python3? – binki

+9

print ("% s% d"% (name, number)) – icarus74

+0

gracias marcog ... – Daniel

6

Son especificadores de formato. Se usan cuando desea incluir el valor de sus expresiones de Python en cadenas, con un formato específico aplicado.

Ver Dive into Python para una introducción relativamente detallada.

12

% s se utiliza como marcador de posición para los valores de cadena que desea insertar en una cadena formateada.

% d se usa como marcador de posición para valores numéricos o decimales.

+4

¿Realmente no explica el problema? No estoy explicando el problema, estoy dando una respuesta concisa a la pregunta.La pregunta específicamente preguntó para qué eran% sy% d. – Soviut

+2

Usted explicó "lo que hacen", no "cómo funcionan". – monokrome

9

Estos son marcadores de posición:

Por ejemplo: 'Hi %s I have %d donuts' %('Alice', 42)

Esta línea de código será sustituir% s con Alice (str) y% d con 42.

de salida: 'Hi Alice I have 42 donuts'

Esto se puede lograr con un "+" la mayor parte del tiempo. Para obtener una comprensión más profunda de su pregunta, también puede verificar {}/.format(). Aquí está un ejemplo: Python string formatting: % vs. .format

también ver aquí un video tutorial de Python Google @ 40' , tiene algunas explicaciones https://www.youtube.com/watch?v=tKTZoB2Vjuk

1

En caso de que le gustaría evitar% s o% d .. entonces

name = 'marcog' 
number = 42 
print ('my name is',name,'and my age is:', number) 

salida:

my name is marcog and my name is 42 
+1

¿Qué tiene que ver esta respuesta con la pregunta? El interlocutor preguntaba sobre el uso de '% s' y'% d'. –

+0

BTW, el código que muestra no es válido en Python 3.5.1: 'print' es una función en Python 3, no una declaración. –

+0

He editado la publicación ... Véalo. En realidad, lo publiqué como una alternativa ... si alguien pudiera evitar el uso de% d o% s. Y gracias por la detección de errores, ..He editado el código. – Sujatha

8

%d y %s son marcadores de posición, que trabajar como una variable reemplazable Por ejemplo, si crea 2 variables

variable_one = "Stackoverflow" 
variable_two = 45 

puede asignar esas variables a una sentencia en una cadena mediante una tupla de las variables.

variable_3 = "I was searching for an answer in %s and found more than %d answers to my question" 

Tenga en cuenta que %s obras para cuerdas y %d trabajo para las variables numéricas o decimales.

si imprime variable_3 se vería así

print(variable_3 % (variable_one, variable_two)) 

que estaba buscando una respuesta en StackOverflow y encontré más de 45 respuestas a mi pregunta.

3

Los "comandos" de formato de cadena %d y %s se utilizan para formatear cadenas. El %d es para números, y %s es para cadenas.

Para un ejemplo:

print("%s" % "hi") 

y

print("%d" % 34.6) 
+0

¡Vota por el uso de un flotador! – LShi

0

de python 3 doc

%d es para número entero decimal

%s es para cadena genérico u objeto y en el caso de objeto , se convertirá en cadena

considere el siguiente código

name ='giacomo' 
number = 4.3 
print('%s %s %d %f %g' % (name, number, number, number, number)) 

la opción de venta a cabo será

Giacomo 4,3 4 4,300000 4,3

como se puede ver %d truncará a entero, %s se mantener el formateo, %f se imprimirá como flotante y %g se usará para número genérico

obviamente

print('%d' % (name)) 

generará una excepción; no puede convertir cadena al número

0

hablando de eso ...
python3.6 viene con f-strings que facilita mucho el formateo!
ahora si la versión de Python es mayor que 3,6 puede formatear sus cuerdas con estos métodos disponibles:

name = "python" 

print ("i code with %s" %name)   # with help of older method 
print ("i code with {0}".format(name)) # with help of format 
print (f"i code with {name}")   # with help of f-strings 
Cuestiones relacionadas