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

sys*_*out 45 python string-formatting

有没有更好的方法在正数上打印数字的+号?

integer1 = 10
integer2 = 5
sign = ''
total = integer1-integer2
if total > 0: sign = '+'
print 'Total:'+sign+str(total)
Run Code Online (Sandbox Code Playgroud)

0应该返回0而不是+.

Khe*_*ben 58

使用新的字符串格式

>>> '{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'
Run Code Online (Sandbox Code Playgroud)

建议通过%运营商

  • 事实证明 f"strings" 也允许嵌套替换字段,因此 `f"{number:{'+' if number else ''}}"` 也有效。 (3认同)
  • 不错的答案!您不需要显式索引 format() 中的组件,因此 `{:+}` 和 `{:{}}` 就足够了。他们还制作了更好的表情符号。 (2认同)

Joh*_*hin 56

>>> print "%+d" % (-1)
-1
>>>
>>> print "%+d" % (1)
+1
>>> print "%+d" % (0)
+0
>>>
Run Code Online (Sandbox Code Playgroud)

这是文档.

**更新**如果由于某种原因您无法使用%操作员,则不需要功能:

>>> 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
>>>
Run Code Online (Sandbox Code Playgroud)

  • 咦?您在问题中使用了'%`运算符!请编辑您的问题,以便它反映您的实际要求. (3认同)

Eri*_*ulz 7

从python 3.6开始:

>>> integer1 = 10
>>> integer2 = 5
>>> total = integer1-integer2
>>> print(f'Total: {total:+}')
Total: +5
Run Code Online (Sandbox Code Playgroud)

要么:

for i in range(-1,2):
    print (f' {i} becomes {i:+}')
Run Code Online (Sandbox Code Playgroud)

输出:

 -1 becomes -1
 0 becomes +0
 1 becomes +1
Run Code Online (Sandbox Code Playgroud)

  • `f"{123.456:+.2f}"` => `'+123.46'` (4认同)