2013-10-26 5 views
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() 
+1

Добавить конец (',') в конце инструкции 'print':' print '% .4f "% (voltsdiff),' – falsetru

ответ

0

Как уже ответили, чтобы напечатать вывод без перевода строки в 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() 

Наконец, вы можете использовать функцию print функции Python 3, которая имеет параметр flush (что делает промывку для вас, если это True):

Я бы рекомендовал последнюю версию, поскольку это то, что вам нужно будет использовать в будущем, если вы портируете свой код на Python 3. Он также довольно явный, с каждой специальной характеристикой печати (нет newline в конце, автоматически промывка), вызванный отдельным аргументом ключевого слова.

+0

Да! Я попробовал следующее: он отлично работает! – Rico

+0

@ Rico: Если мой ответ помог решить вашу проблему, подумайте о том, чтобы принять его, нажав на галочку слева. – Blckknght

2

Просто распечатайте их с запятой

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

Кроме того, вы можете использовать способ format. Вы можете прочитать все о форматировании here

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

Допустит, вы печатаете эти значения итерации списка, вы можете сделать что-то вроде этого

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

Если вы печатаете на терминал, вы можете использовать стандартный вывод с \ г \ или б избежать

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

«\ г» бежать переместить курсор в начале строки (как кр на одной линии) и «\ b» - unab: переместите 4 позиции назад.

PS: стандартный вывод сделать некоторые кэш, вы должны вызвать sys.stdout.flush(), чтобы быть уверенным, что результат на терминале по требованию, прежде чем буфер заполнен

Смежные вопросы