Вопрос: Как печатать без новой строки или пробела?


Вопрос находится в названии.

Я хотел бы сделать это в , Что я хотел бы сделать в этом примере в :

#include <stdio.h>

int main() {
    int i;
    for (i=0; i<10; i++) printf(".");
    return 0;
}

Вывод:

..........

В Python:

>>> for i in xrange(0,10): print '.'
.
.
.
.
.
.
.
.
.
.
>>> for i in xrange(0,10): print '.',
. . . . . . . . . .

В Python printдобавит \nили пробел, как я могу избежать этого? Теперь это просто пример. Не говорите мне, что я могу сначала построить строку, а затем распечатать ее. Я хотел бы знать, как «присоединить» строки к stdout,


1317


источник


Ответы:


Общий путь

import sys
sys.stdout.write('.')

Вам также может потребоваться позвонить

sys.stdout.flush()

для обеспечения stdoutнемедленно промывается.

Python 2.6+

Из Python 2.6 вы можете импортировать printфункция из Python 3:

from __future__ import print_function

Это позволяет вам использовать решение Python 3 ниже.

Python 3

В Python 3 printоператор был изменен на функцию. В Python 3 вы можете:

print('.', end='')

Это также работает на Python 2, при условии, что вы использовали from __future__ import print_function,

Если у вас возникли проблемы с буферизацией, вы можете очистить вывод, добавив flush=Trueаргумент ключевого слова:

print('.', end='', flush=True)

1829



Это должно быть так просто, как описано в этой ссылке Гвидо ван Россумом:

Re: Как печатать без c / r?

http://legacy.python.org/search/hypermail/python-1992/0115.html

Можно ли что-то печатать, но не автоматически   к нему добавляется возврат каретки?

Да, добавьте запятую после последнего аргумента для печати. Например, этот цикл печатает числа 0..9 в строке, разделенной пробелами. Заметка без параметров «печать», которая добавляет окончательную новую строку:

>>> for i in range(10):
...     print i,
... else:
...     print
...
0 1 2 3 4 5 6 7 8 9
>>> 

269



Примечание. Название этого вопроса раньше было чем-то вроде «Как напечатать f в python?»

Поскольку люди могут приходить сюда искать его на основе названия, Python также поддерживает подстановку в стиле printf:

>>> strings = [ "one", "two", "three" ]
>>>
>>> for i in xrange(3):
...     print "Item %d: %s" % (i, strings[i])
...
Item 0: one
Item 1: two
Item 2: three

И вы можете легко умножить строковые значения:

>>> print "." * 10
..........

157



Use the python3-style print function for python2.6+ (will also break any existing keyworded print statements in the same file.)

# for python2 to use the print() function, removing the print keyword
from __future__ import print_function
for x in xrange(10):
    print('.', end='')

To not ruin all your python2 print keywords, create a separate printf.py file

# printf.py

from __future__ import print_function

def printf(str, *args):
    print(str % args, end='')

Then, use it in your file

from printf import printf
for x in xrange(10):
    printf('.')
print 'done'
#..........done

More examples showing printf style

printf('hello %s', 'world')
printf('%i %f', 10, 3.14)
#hello world10 3.140000

83



This is not the answer to the question in the title, but it's the answer on how to print on the same line:

import sys
for i in xrange(0,10):
   sys.stdout.write(".")
   sys.stdout.flush()

37



The new (as of Python 3.0) print function has an optional end parameter that lets you modify the ending character. There's also sep for separator.


20



You can just add , in the end of print function so it won't print on new line.


17



Using functools.partial to create a new function called printf

>>> import functools

>>> printf = functools.partial(print, end="")

>>> printf("Hello world\n")
Hello world

Easy way to wrap a function with default parameters.


13



print function in python automatically generates a new line. You could try:

print("Hello World", end="")


13



Code for Python 3.6.1

for i in range(0,10): print('.' , end="")

Output

..........
>>>

9



You can do it with end argument of print. In python3 range() returns iterator and xrange() doesn't exist.

for i in range(10): print('.', end='')

7



you want to print something in for loop right;but you don't want it print in new line every time.. for example:

 for i in range (0,5):
   print "hi"

 OUTPUT:
    hi
    hi
    hi
    hi
    hi

but you want it to print like this: hi hi hi hi hi hi right???? just add a comma after print "hi"

Example:

for i in range (0,5): print "hi", OUTPUT: hi hi hi hi hi


7