如何在Python中打印正数的加号符号+

89

如何更好地打印正数上的加号?

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

0应该不需要+就返回0。

3个回答

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'

建议使用此方法而不是使用 % 运算符。


1
0 -> +0,不是 OP 想要的。 - John Machin
是的,抱歉,我一按按钮就注意到了。我已经纠正了它。 - Khelben
2
好答案!您不需要显式索引format()内的组件,因此{:+}{:{}}就足够了。它们也可以作为更好的表情符号。 - 1''
仍将打印“-0.0”的符号。 - Dan M.
4
原文已经表明 f"strings" 可以嵌套替换字段,因此 f"{number:{'+' if number else ''}}" 也可行。 简化翻译:原来的字符串格式化方法(f-strings)还支持嵌套使用,所以 f"{number:{'+' if number else ''}}" 也是可以的。 - dorukayhan

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

谢谢你的回答。 我正在使用web.py模板引擎,不确定是否可以使用字符串格式化%运算符。是否有一个Python方法可以返回给定数字的符号? - systempuntoout
3
哎?您在问题中使用了百分号(%)运算符!请编辑您的问题,使其反映出您的真实需求。 - John Machin
"+" 如果总数大于0,否则为空。这样做会多出6个字符,但更加直接和清晰(在我看来)。 - jchl
我们如何在没有加号的情况下使0返回0?print "Total:" + ["", ""][total > 0] + str(total) - Lumos

41

从 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

我注意到0返回+0,但个人更喜欢这样。 - ErichBSchulz
1
你会如何使用浮点数来完成这个任务? - Tom Connery
6
f"{123.456:+.2f}" => '+123.46' - Cees Timmerman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接