使用 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 == 1
和 False == 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'
我想知道是否有一个好的 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 == 1
和 False == 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'