2010-05-04 20 views

Respuesta

37
>>> print "%+d" % (-1) 
-1 
>>> 
>>> print "%+d" % (1) 
+1 
>>> print "%+d" % (0) 
+0 
>>> 

Aquí está the documentation.

** Actualización ** Si por cualquier razón no se puede utilizar el operador %, usted no necesita una función:

>>> total = -10; print "Total:" + ["", "+"][total > 0] + str(total) 
Total:-10 
>>> total = 0; print "Total:" + ["", "+"][total > 0] + str(total) 
Total:0 
>>> total = 10; print "Total:" + ["", "+"][total > 0] + str(total) 
Total:+10 
>>> 
+0

Gracias por su respuesta. Estoy trabajando con el templator de web.py y no estoy seguro si puedo usar el operador% de formateo de cadena. ¿Hay algún método de Python que devuelva el signo de un número determinado? – systempuntoout

+3

¿Eh? Usaste el operador '%' en tu pregunta! Por favor edite su pregunta para que refleje sus requisitos reales. –

+0

Eso es una belleza, gracias :) – systempuntoout

43

Utilice la new string format

>>> '{0:+} number'.format(1) 
'+1 number' 
>>> '{0:+} number'.format(-1) 
'-1 number' 
>>> '{0:+} number'.format(-37) 
'-37 number' 
>>> '{0:+} number'.format(37) 
'+37 number' 
# As the questions ask for it, little trick for not printing it on 0 
>>> number = 1 
>>> '{0:{1}} number'.format(number, '+' if number else '') 
'+1 number' 
>>> number = 0 
>>> '{0:{1}} number'.format(number, '+' if number else '') 
'0 number' 

Se recomienda más de el operador %

+0

0 -> '+ 0', no lo que quiere el OP. –

+0

Sí, lo siento, me di cuenta en el momento en que presioné el botón. Lo he corregido – Khelben

+1

¡Buena respuesta! No necesita indexar explícitamente los componentes dentro de format(), así que '{: +}' y '{: {}}' son suficientes. También hacen mejores emoticones. –

Cuestiones relacionadas