Я хотел бы сделать это в питон, Что я хотел бы сделать в этом примере вс:
В С:
#include <stdio.h>
int main() {
int i;
for (i=0; i<10; i++) printf(".");
return 0;
}
Вывод:
..........
В Python:
>>> for i in range(10): print('.')
.
.
.
.
.
.
.
.
.
.
>>> print('.', '.', '.', '.', '.', '.', '.', '.', '.', '.')
. . . . . . . . . .
В Python print
добавит \n
или пробел, как я могу избежать этого? Теперь это просто пример, не говорите мне, что я могу сначала создать строку, а затем распечатать ее. Я хотел бы знать, как "добавлять" строки в stdout
.
Ответы:
В Python 3 вы можете использовать
sep=
иend=
параметрыprint
функции:Чтобы не добавлять новую строку в конец строки:
Чтобы не добавлять пробел между всеми аргументами функции, которые вы хотите вывести:
Вы можете передать любую строку любому параметру, и вы можете использовать оба параметра одновременно.
Если у вас возникли проблемы с буферизацией, вы можете очистить вывод, добавив
flush=True
ключевое слово аргумент:Python 2.6 и 2.7
Из Python 2.6 вы можете импортировать
print
функцию из Python 3, используя__future__
модуль :который позволяет использовать решение Python 3 выше.
Однако обратите внимание, что
flush
ключевое слово недоступно в версииprint
функции, импортированной из__future__
Python 2; он работает только в Python 3, а точнее 3.3 и позже. В более ранних версиях вам все равно нужно будет выполнить сброс вручную с помощью вызоваsys.stdout.flush()
. Вам также нужно будет переписать все другие операторы печати в файле, где вы выполняете этот импорт.Или вы можете использовать
sys.stdout.write()
Вам также может понадобиться позвонить
чтобы
stdout
немедленно промыть.источник
flush
и что оно делает на самом деле?Это должно быть так просто, как описано по этой ссылке Гвидо Ван Россумом:
Re: Как печатать без AC / R?
http://legacy.python.org/search/hypermail/python-1992/0115.html
Да, добавьте запятую после последнего аргумента для печати. Например, этот цикл печатает числа 0..9 в строке, разделенной пробелами. Обратите внимание на параметр «print» без параметров, который добавляет последний символ новой строки:
источник
Примечание: заголовок этого вопроса был что-то вроде «Как напечатать в Python?»
Поскольку люди могут приходить сюда в поисках по названию, Python также поддерживает подстановку в стиле printf:
И вы можете умножить строковые значения:
источник
Используйте функцию печати в стиле python3 для python2.6 + (также нарушит все существующие операторы печати с ключевыми словами в том же файле.)
Чтобы не испортить все ваши ключевые слова печати python2, создайте отдельный
printf.py
файлЗатем используйте его в своем файле
Больше примеров, показывающих стиль printf
источник
Как печатать на одной строке:
источник
Новая
print
функция ( начиная с Python 3.x) имеет необязательныйend
параметр, который позволяет изменять конечный символ:Вывод:
Там же
sep
для разделителя:Вывод:
Если вы хотите использовать это в Python 2.x, просто добавьте это в начале вашего файла:
from __future__ import print_function
источник
Использование functools.partial для создания новой функции с именем printf
Простой способ обернуть функцию с параметрами по умолчанию.
источник
Вы можете просто добавить
,
в конецprint
функции, чтобы она не печаталась на новой строке.источник
В Python 3+
print
это функция. Когда вы звонитеPython переводит это
Вы можете изменить
end
на что угодно.источник
Python 2.6+ :
питон 3 :
питон <= 2.5 :
если дополнительное пространство в порядке после каждой печати, в Python 2
вводить в заблуждение в Python 2 - избегать :
источник
Ты можешь попробовать:
источник
Вы можете сделать то же самое в python3 следующим образом:
и выполнить его с помощью
python filename.py
илиpython3 filename.py
источник
у меня недавно была такая же проблема ..
я решил это, сделав:
это работает как на Unix, так и на Windows ... не проверял его на Macosx ...
НТН
источник
sys.__stdout__
@lenooh удовлетворил мой запрос. Я обнаружил эту статью во время поиска 'python suppress newline'. Я использую IDLE3 на Raspberry Pi для разработки Python 3.2 для PuTTY. Я хотел создать индикатор выполнения в командной строке PuTTY. Я не хотел, чтобы страница прокручивалась. Я хотел, чтобы горизонтальная линия убедила пользователя в том, что программа не остановилась и не была отправлена на ланч по бесконечной бесконечной петле - как просьба «оставь меня, у меня все хорошо, но это может занять некоторое время. интерактивное сообщение - как индикатор выполнения в тексте.
print('Skimming for', search_string, '\b! .001', end='')
Инициализирует сообщение по подготовке к следующему экрану-записи, который будет печатать три забоя , как ⌫⌫⌫ rubout , а затем период, вытирания «001» и расширяя линию периодов. После того, какsearch_string
попугай введен пользователем,\b!
восклицательный знак моегоsearch_string
текста обрезается так, чтобы он возвышался над пробелом, который вprint()
противном случае приводит к правильной расстановке знаков препинания. Затем следует пробел и первая «точка» «индикатора выполнения», который я моделирую. Излишне, сообщение также тогда заполняется номером страницы (отформатированный в длину три с ведущими нулями), чтобы заметить от пользователя, что прогресс обрабатывается и который также будет отражать количество периодов, которые мы позже построим к правильно.Индикатор выполнения мяса находится в
sys.stdout.write('\b\b\b.'+format(page, '03'))
очереди. Сначала, чтобы стереть влево, он создает резервную копию курсора над тремя числовыми символами с помощью '\ b \ b \ b' в виде ⌫⌫⌫ Rubout и сбрасывает новый период, чтобы добавить к длине индикатора выполнения. Затем он записывает три цифры страницы, до которой он дошел. Посколькуsys.stdout.write()
ожидание закрытия полного буфера или выходного канала приводитsys.stdout.flush()
к немедленной записи.sys.stdout.flush()
встроен в конецprint()
которого обойденprint(txt, end='' )
. Затем код выполняет циклические операции, требующие больших затрат времени, и ничего больше не печатает, пока не вернется сюда, чтобы стереть три цифры назад, добавить точку и снова написать три цифры, с приращением.Три цифры, вытертые и переписанные, ни в коем случае не являются необходимыми - это просто процветание, которое служит примером для
sys.stdout.write()
сравненияprint()
. Вы также можете легко заштриховать точку и забыть о трех причудливых обратных символах backslash-b ((конечно, не записывая и отформатированное количество страниц), просто печатая строку периода длиннее на единицу каждый раз - без пробелов и новых строк, используя толькоsys.stdout.write('.'); sys.stdout.flush()
пара.Обращаем ваше внимание, что оболочка Python Raspberry Pi IDLE3 не принимает символ возврата на обратную сторону как ⌫ rubout, а вместо этого печатает пробел, создавая вместо этого видимый список дробей.
- (o = 8> мудрый
источник
Вы заметите, что все вышеприведенные ответы верны. Но я хотел сделать ярлык, чтобы всегда писать параметр "end = ''" в конце.
Вы можете определить функцию как
Было бы принять все количество параметров. Даже он будет принимать все другие параметры, такие как file, flush и т. Д. И с тем же именем.
источник
*arg
находится в начале (python 2.7), а установка его в конце действительно запускается, но не работает полностью правильно. Я определил функцию, которая только взялаPrint(*args)
, а затем просто вызвал print сsep='', end=''
. И теперь это работает, как я хочу. Итак, один довод за идею.Многие из этих ответов кажутся немного сложными. В Python 3.x вы просто делаете это:
Значение по умолчанию end
"\n"
. Мы просто меняем его на пробел, или вы также можете использоватьend=""
(без пробела) делать то, чтоprintf
обычно делает.источник
Вы хотите напечатать что-нибудь в for for right, но вы не хотите, чтобы это печаталось в новой строке каждый раз ... например:
но вы хотите, чтобы это печаталось так: привет привет привет привет привет привет ???? просто добавьте запятую после печати "привет"
Пример:
for i in range (0,5): print "hi", OUTPUT: hi hi hi hi hi
источник
Или иметь такую функцию:
То теперь:
Выходы:
источник
Это работало как в 2.7.8, так и в 2.5.2 (терминал Canopy и OSX соответственно) - не требуется импорт модуля или перемещение во времени.
источник
sys.stdout.isatty()
если не перенаправлены в файл.Есть два основных способа сделать это:
Печать без перевода строки в Python 3.x
Ничего не добавляйте после оператора print и удаляйте '\ n', используя
end=''
как:Еще один пример в цикле :
Печать без перевода строки в Python 2.x
Добавление запятой в конце говорит, что после печати игнорировать
\n
.Еще один пример в цикле :
Надеюсь, что это поможет вам. Вы можете посетить эту ссылку .
источник
end=" "
например: print ('hello', end = '' "); print ('world')print 'hello' ;print'there'
в paiza.io/projects/e/35So9iUPfMdIORGzJTb2NQ... вам не нужно импортировать любую библиотеку. Просто используйте символ удаления:
это удаляет символ новой строки и пробел (^ _ ^) *
источник