簡體   English   中英

如何並排打印電壓?

[英]How to print voltages side by side?

我正在使用一個程序,將一個電壓打印在另一個電壓的下方,例如:

2.333

2.334

2.336

2.445

但我想要這樣:

2.333 2.334 2.336 2.445 

好的,這對我有用:

while True:
   voltsdiff = adc.readADCDifferential01(4096, 8)
   import sys
   print '{:.4f}'.format(voltsdiff),
   sys.stdout.flush()

只需用逗號打印它們

print "%.4f" % (voltsdiff),

此外,您可能要使用format方法。 您可以在此處閱讀有關格式化的所有信息

print "{:.4f}".format(voltsdiff),

可以說,您通過迭代列表來打印這些值,您可以執行以下操作

data = [2.333, 2.334, 2.336, 2.445]
print " ".join(data)

如果打印到終端,則可以將stdout與\\ r或\\ b轉義一起使用

sys.stdout.write("\r%.4f\t%.4f\t%.4f\t%.4f" % (v1, v2, v3, v4))

“ \\ r”轉義符將光標移動到行首(如cr在同一行上),而“ \\ b”則取消制表符:向后移4位。

PS:stdout做一些緩存,您應該在緩沖區已滿之前調用sys.stdout.flush()以確保結果在請求時顯示在終端上

正如其他人回答的那樣,要在Python 2中打印輸出時不帶換行符,請在打印語句的末尾添加一個逗號:

print "%.4f" % voltsdiff,

但是,這不會刷新輸出,因為默認情況下標准輸出是行緩沖的(僅在將換行符添加到輸出時才刷新)。 有幾種方法可以解決此問題。

首先,您可以在某個時候在換行符后面附加一個基本的print語句,例如:

for i, voltsdiffs in enumerate(many_voltages):
    print "%.4f" % voltsdiffs,
    if i % 10 == 9:
         print # puts a newline after every 10 values

接下來,您可以使用sys.stdout.flush()顯式刷新標准輸出:

print "%.4f" % voltsdiffs,
sys.stdout.flush()

最后,您可以使用Python 3樣式的print函數,該函數具有flush參數(如果為True ,則會為您執行刷新):

# before any other code
from __future__ import print_function

# later
print(format(voltsdiffs, ".4f"), end=" ", flush=True)

我通常會建議使用最后一個版本,因為如果您將代碼移植到Python 3,這是將來需要使用的版本。它也非常明確,具有打印的每個特殊特征(末尾沒有換行符,刷新自動)由單獨的關鍵字參數調用。

暫無
暫無

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

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