python 有可能过滤掉格式化字符串中的零值吗?

ffscu2ro  于 2023-01-04  发布在  Python
关注(0)|答案(3)|浏览(126)

格式化字符串常量(:+)用于显示数字的符号(+或-)。例如:

a = 2

b = -5

print(f"{a+b:+}")

output: -3

a = 2

b = 5

print(f"{a+b:+}")

output: +7

如果输出为0,则输出为+0。
有没有一种方法可以让aB之和为0时,输出应该不返回任何值(我不确定这意味着什么),或者可能输出一个空字符串?
例如:Gn = c +(a-b)
如果a3B也为3,则输出应为Gn = c。而不是Gn=c+0
我试过应用一些条件语句wrt 0,返回一个空字符串,但是格式化字符串文字(:+)只对整数有效。

gupuwyp2

gupuwyp21#

有没有一种方法,如果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
q35jwt9p

q35jwt9p2#

我不确定我是否完全理解了,但在你的例子中,也许只是在上面做计算和分支:

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 "")
8fsztsew

8fsztsew3#

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

a = 2
b = -3

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

相关问题