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

Properly printing a character depending on a variable using python

我想知道是否有一个好的 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

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

My total gain is -1

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

My total gain is 0

我也想尽可能避免外部模块。

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

这是有效的,因为 True == 1False == 0,一个数字 n 次字符串是该字符串重复 n 次,所以 0 * "+" 是空字符串 "".

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

使用 f 弦:

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

f-strings 是一个很好的方法:

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

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

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