如何在Python中为正数打印数字的正号+

90 投票
3 回答
68743 浏览
提问于 2025-04-15 22:19

有没有更好的方法在正数前面打印一个加号 (+) 呢?

integer1 = 10
integer2 = 5
sign = ''
total = integer1-integer2
if total > 0: sign = '+'
print 'Total:'+sign+str(total)

对于0来说,应该返回0,不带加号。

3 个回答

42

从Python 3.6开始:

>>> integer1 = 10
>>> integer2 = 5
>>> total = integer1-integer2
>>> print(f'Total: {total:+}')
Total: +5

或者:

for i in range(-1,2):
    print (f' {i} becomes {i:+}')

输出结果:

 -1 becomes -1
 0 becomes +0
 1 becomes +1
106

使用新的字符串格式

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

这个方法比用%运算符更推荐

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

这里是相关文档

** 更新** 如果因为某些原因你不能使用%这个符号,也不需要一个函数:

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

撰写回答