1

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

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

3 回答 3

2

只需用逗号打印它们

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

此外,您可能想使用format方法。您可以在此处阅读有关格式化的所有信息

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

可以说,您通过迭代列表来打印这些值,您可以执行以下操作

data = [2.333, 2.334, 2.336, 2.445]
print " ".join(data)
于 2013-10-26T17:08:26.910 回答
0

如果您打印到终端,您可以使用带有\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() 以确保结果在请求时在终端上,在缓冲区满之前

于 2013-10-26T17:55:13.120 回答
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,您将来需要使用它。它也非常明确,具有打印的每个特殊特征(最后没有换行符,冲洗自动)由单独的关键字参数调用。

于 2013-10-26T18:56:34.613 回答