我正在使用一个程序打印出另一个正下方的电压,例如:
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()
答案 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,将来需要使用它。它也非常明确,具有打印的每个特殊特性(没有新行结束,自动刷新)由单独的关键字参数调用。