如何并排打印电压?

时间:2013-10-26 17:07:45

标签: python printing

我正在使用一个程序打印出另一个正下方的电压,例如:

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()

3 个答案:

答案 0 :(得分:2)

只需用逗号打印它们

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

此外,您可能希望使用format方法。您可以阅读有关格式here

的所有信息
print "{:.4f}".format(voltsdiff),

让我们说,你是通过迭代列表打印这些值,你可以做这样的事情

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

答案 1 :(得分:0)

如果你打印到终端,你可以使用stdout与 \ r或\ b 转义

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

“\ r”转义将光标移动到行的开头(就像同一行上的cr),“\ b”是解除的:向后移动4个位置。

P.S.:stdout做一些缓存,你应该调用sys.stdout.flush()以确保在缓冲区满了之前结果是在请求终端上

答案 2 :(得分:0)

正如其他人已经回答的那样,要在Python 2中打印没有换行符的输出,请在print语句的末尾添加逗号:

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,将来需要使用它。它也非常明确,具有打印的每个特殊特性(没有新行结束,自动刷新)由单独的关键字参数调用。