繁体   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