是否可以过滤出格式化字符串文字中的零值?



格式化字符串字面值(:+)用于显示数字的符号(+或-)。例句:

a = 2
b = -5
print(f"{a+b:+}")
output: -3

a = 2
b = 5
print(f"{a+b:+}")
output: +7

如果输出为0,则给出+0。

是否有一种方法和b是0,输出应该什么也不返回(我不确定这意味着什么),或者输出一个空字符串?示例:Gn = c + (a-b)

如果3b3输出也应该是Gn =c,而不是Gn=c+0

我已经尝试应用一些条件语句wrt 0,返回一个空字符串,而不是格式化字符串字面值(:+)只适用于整数。

是否有一种方法,如果a和b的总和为0,输出应该什么也不返回(我不确定这意味着什么),或者可能输出一个空字符串?

创建一个格式帮助器。非零被认为是True,因此如果数字为false,则可以返回一个空字符串:

def fmt(i):
return f'{i:+}' if i else ''
a = 1
for b in range(3):
print(f'result: {fmt(a-b)}')

输出:

result: +1
result: 
result: -1

我不确定我完全跟上了,但在你的情况下,也许只是做计算和分支:

c = 1
a = 2
b = 3
a_minus_b = a - b
if a_minus_b:
print(f"Gn = {c} + ({a} - {b})")
else:
print(f"Gn = {c}")

当然,这可以做得更花哨(如果可读性较差),例如

print(f"Gn = {c} + ({a} - {b})" if a_minus_b else f"Gn = {c}")

print(f"Gn = {c}" + f" + ({a} - {b})" if a_minus_b else "")

您可以插入一个条件语句来检查两个变量的和,如果如果和为零,您可以打印空字符串字面量,否则您可以打印实际值。

a = 2
b = -3
if a + b == 0:
print(f"")
else:
print(f"{a+b:+}")

最新更新