24

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

6

Я столкнулся с проблемой использования функции print в Python. Рассмотрим следующие примеры:

>>> for i in range(4): print('.')
.
.
.
.
>>> print('.', '.', '.', '.')
. . . .

В каждом случае между выводимыми значениями добавляется либо перевод строки, либо пробел. Как я могу избежать этого, чтобы получить вывод в виде ....? Другими словами, как мне "добавить" строки в стандартный поток вывода?

4 ответ(ов)

1

Замечание: название этого вопроса раньше было что-то вроде "Как использовать printf в Python".

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

>>> strings = ["один", "два", "три"]
>>>
>>> for i in range(3):
...     print("Элемент %d: %s" % (i, strings[i]))
...
Элемент 0: один
Элемент 1: два
Элемент 2: три

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

>>> print("." * 10)
..........

Этот способ вполне удобен, хотя в более современных версиях Python предпочтительнее использовать f-строки или метод .format(). Однако, если вы находитесь в контексте кода, где используется стиль printf, вышеуказанный подход будет работать.

0

Чтобы вывести символы на одной строке в Python, вы можете использовать метод sys.stdout.write() вместе с sys.stdout.flush(), чтобы принудительно обновить вывод. Однако, при использовании этого метода в Python 3 рекомендуем использовать print() с аргументом end, чтобы управлять тем, как происходит вывод. Вот пример:

import sys
import time  # Для демонстрации задержки

for i in range(10):  # Используем range вместо xrange в Python 3
    print(".", end="", flush=True)  # Выводим точку, не переводя на новую строку
    time.sleep(0.5)  # Добавляем небольшую задержку для наглядности

В приведенном выше коде print(".", end="", flush=True) означает, что символ точки будет выводиться на той же строке, без перехода на новую строку, а flush=True обновляет вывод сразу. Таким образом, вы получите ожидаемый результат на одной строке.

0

В Python 3.x функция print имеет необязательный параметр end, который позволяет изменить символ в конце строки:

print("HELLO", end="")
print("HELLO")

Вывод будет:

HELLOHELLO

Также есть параметр sep, который задает разделитель между выводимыми значениями:

print("HELLO", "HELLO", "HELLO", sep="")

Вывод:

HELLOHELLOHELLO

Если вы хотите использовать это в Python 2.x, просто добавьте следующую строку в начало вашего файла:

from __future__ import print_function
0

Использование functools.partial для создания новой функции под названием printf выглядит следующим образом:

>>> import functools

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

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

Таким образом, вы можете создать обёртку вокруг функции, устанавливая значения по умолчанию для её параметров. В данном случае, мы устанавливаем end="", чтобы вывод в консоль не добавлял новый символ строки после значения, а вместо этого вы можете добавлять его вручную при необходимости. Это простой способ упростить вызов функции с заданными параметрами.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь