簡體   English   中英

是否可以過濾掉格式化字符串文字中的零值?

[英]Is it possible to filter out zero values in formatted string literals?

格式化字符串文字 (:+) 用於顯示數字的符號(+ 或 -)。 例如:

a = 2

b = -5

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

output: -3

要么

a = 2

b = 5

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

output: +7

如果 output 為 0,則給出 +0。

有沒有一種方法可以讓ab的總和為 0,那么 output 應該什么都不返回(我不確定那是什么意思),或者 output 應該返回一個空字符串?

示例: Gn = c + (ab)

如果a3b也是3,output應該是Gn = c。不是Gn=c+0

我試圖應用一些條件語句 wrt 0,而不是返回一個空字符串,但格式化字符串文字 (:+) 僅適用於整數。

有沒有一種方法可以讓 a 和 b 的總和為 0,那么 output 應該什么都不返回(我不確定那是什么意思),或者 output 應該返回一個空字符串?

做一個格式助手。 非零被認為是真的,所以如果數字是假的,你可以返回一個空字符串:

def fmt(i):
    return f'{i:+}' if i else ''

a = 1
for b in range(3):
    print(f'result: {fmt(a-b)}')

Output:

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:+}")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM