2012-04-02 12 views
7

Soy bastante nuevo en Python, así que estoy probando un código simple. Sin embargo, en una de las prácticas, se supone que mi código muestra algunos números en pulgadas a la izquierda y la conversión de los números a la derecha;Cómo agrego espacio entre dos variables después de una impresión en Python

count = 1 
conv = count * 2.54 
print count, conv 

Quiero que la salida se imprima con algo de espacio entre ellos;

count = 1 
conv = count * 2.54 
print count,  conv 

No sé cómo hacerlo. He buscado en todas partes, pero todo lo que puedo encontrar son personas que intentan deshacerse del espacio. Si alguien pudiera llevarme en la dirección correcta, estaría agradecido.

Ah, y me acabo de dar cuenta de que Estoy usando Python 2.7, no 3.x. No estoy seguro si esto es importante.

Respuesta

7

Una forma sencilla sería:

print str(count) + ' ' + str(conv) 

Si necesita más espacios, sólo tiene que añadir a la cadena:

print str(count) + ' ' + str(conv) 

Una forma más elegante, usando la nueva sintaxis de formato de cadenas:

print '{0} {1}'.format(count, conv) 

O usando la sintaxis antigua, limitando el número de decimales a dos:

print '%d %.2f' % (count, conv) 
+0

Ninguno de los dos funciona. La primera forma me da un error de Traceback, y el segundo actúa como si fuera 'print count, conv' – Hebon

+0

Se arregló el primero, para todos ellos: ¡puede agregar tantos espacios como necesite mientras tanto! –

+0

El primero no funcionará porque no puede agregar un número entero a una cadena, ni una cadena a un elemento flotante. Para obtener más espacio en los ejemplos segundo y tercero, simplemente coloque el número de espacios requerido entre {0} y {1} o el% d y% f. – Whatang

4

Use string interpolation en su lugar.

print '%d %f' % (count,conv) 
+0

Eso casi funciona, pero ahora tengo ceros adicionales al final de mi variable "conv" 'Pulgadas \t \t Centímetros 1 2.540000' – Hebon

+1

Entonces sintonice el especificador '% f'. –

1

Esta es una manera estúpida/hacky

print count,  
print conv 
2

Alternativamente, puede utilizar ljust/rjust para hacer que el formato más agradable.

print "%s%s" % (str(count).rjust(10), conv) 

o

print str(count).ljust(10), conv 
+0

Realmente me gusta esta solución más que a los parientes 'printf'. Es más fácil de entender que un especificador de formato 'printf' y hace exactamente lo que dice en la lata. –

2

Una advertencia rápida, presente una respuesta bastante prolijo.

imprimir es complicado algunas veces, tuve algunos problemas cuando comencé. Lo que quiere son algunos espacios entre dos variables después de imprimirlos, ¿verdad? Hay muchas formas de hacerlo, como se muestra en las respuestas anteriores.

Este es su código:

count = 1 
conv = count * 2.54 
print count, conv 

Es de salida es la siguiente:

1 2.54 

Si desea espacios en el medio, puede hacerlo de la manera ingenua pegando una serie de espacios en el medio ellos. Las variables count y conv necesitan convertirse a tipos de cadena para concatenarlas (juntarlas). Esto se hace con str().

print (str(count) + "   " + str(conv)) 
### Provides an output of: 
1   2.54 

Para ello es la forma más nueva, más Pythonic, utilizamos el signo% junto con una carta para indicar el tipo de valor que estamos usando. Aquí uso guiones bajos en lugar de espacios para mostrar cuántos hay. El módulo anterior a los últimos valores simplemente le dice a python que inserte los siguientes valores, en el orden que proporcionamos.

print ('%i____%s' % (count, conv)) 
### provides an output of: 
1____2.54 

utilicé% i para el recuento porque es un número entero, y% s para conv, porque el uso de% i en ese caso nos proporcionaría "2" en lugar de "2,54" Técnicamente, pude' he usado ambos% s, pero está todo bien.

Espero que esto ayude!

-Joseph

P.S. si quieres complicarte con tu formateo, debes mirar en prettyprint para grandes cantidades de texto, como diccionarios y listas de tuplas (importadas como pprint), así como , que hace pestañas automáticas, espaciado y otras cosas interesantes.

Aquí hay más información acerca de las cadenas en los documentos de python. http://docs.python.org/library/string.html#module-string

+1

Esto es muy informativo. Gracias por tomarse el tiempo para explicarlo. – Hebon

+0

¡Gracias, estoy feliz de haber sido útil! –

0

print str(count) + ' ' + str(conv) - Esto no funcionó. Sin embargo, la sustitución de + con , funciona para mí

0

Debe utilizar pitón explícita Bandera de conversión de PEP-3101

'My name is {0!s:10} {1}'.format('Dunkin', 'Donuts')

'My name is Dunkin Donuts'

o

'My name is %-10s %s' % ('Dunkin', 'Donuts')

'My name is Dunkin Donuts'

https://www.python.org/dev/peps/pep-3101/

Cuestiones relacionadas