我想知道是否有一种很好的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
如果可能的话,我也想避免使用外部模块。
答案 0 :(得分:3)
您可以将isSign(value)
替换为(value > 0) * "+"
。
之所以可行,是因为True == 1
和False == 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'