使用python根据变量正确打印字符

时间:2018-06-27 14:23:59

标签: python variables optimization printing sign

我想知道是否有一种很好的pythonic方法来做这样的事情:

size1 = 4 
size2 = 3
value = size1 - size2

def isSign(value):
    if value > 0 :
        return "+"
    else :
        return ""

print("My total gain is" + isSign(value) + str(value))

在这种情况下,我的字符串应如下所示:

My total gain is +1

在value为-1的情况下,我的字符串应如下所示:

My total gain is -1

在value为0的情况下,我的字符串应如下所示:

My total gain is 0

如果可能的话,我也想避免使用外部模块。

3 个答案:

答案 0 :(得分:3)

您可以将isSign(value)替换为(value > 0) * "+"

之所以可行,是因为True == 1False == 0以及一个字符串的数字n是该字符串重复了n次,因此0 * "+"是空字符串""

但是,有些人可能会觉得它不可读,我必须解释它是如何工作的事实证明了这一点。

使用f字符串:

f"My total gain is {(value > 0) * '+'}{value}"

答案 1 :(得分:3)

f字符串是执行此操作的好方法:

print(f'My total gain is {"+" if value > 0 else ""}{value}') 

答案 2 :(得分:3)

字符串格式为此提供了+标志:

>>> "{:+}".format(3)
'+3'
>>> "{:+}".format(-3)
'-3'