2010-05-04 10 views

risposta

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

Qui è the documentation.

** Aggiornamento ** Se per qualsiasi motivo non è possibile utilizzare l'operatore %, non hai bisogno di una funzione:

>>> 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

Grazie per la risposta. Sto lavorando con web.py templator e non sono sicuro di poter usare l'operatore di formattazione della stringa%. Esiste un metodo Python che restituisce il segno di un determinato numero? – systempuntoout

+3

Eh? Hai usato l'operatore '%' nella tua domanda! Modifica la tua domanda in modo che rifletta i tuoi reali requisiti. –

+0

Questa è una bellezza, grazie :) – systempuntoout

43

Utilizzare 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' 

Si consiglia over l'operatore %

+0

0 -> '+ 0', non ciò che l'OP vuole. –

+0

Sì, mi dispiace, ho notato il momento in cui premo il pulsante. L'ho corretto – Khelben

+1

Bella risposta! Non è necessario indicizzare esplicitamente i componenti all'interno di format(), quindi '{: +}' e '{: {}}' sono sufficienti. Fanno anche emoticon migliori. –

Problemi correlati