Рубрики
Без рубрики

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

В этом уроке мы рассмотрим, как печатать без новой строки или пробела в Python, используя функции print() и write (), на примерах.

Автор оригинала: Sathiya Sarathi Gunasekaran.

Вступление

Функция print() в Python добавляет новую строку к выходным данным при отображении на tty (teletypewriter A. K. A the terminal). Если вы не хотите, чтобы ваше сообщение отображалось с новыми строками или пробелами, как вы можете изменить поведение print() ?

Этого можно легко достичь, изменив значения по умолчанию параметров sep и end функции print () .

Печать без новой строки

До версии Python 2.x print было зарезервированным ключевым словом, которое действует как специальный оператор. Начиная с Python версии 3.x, команда print превратилась в функцию.

Эта версия print() способна принимать следующие аргументы:

Функция печати - синтаксис

Значения ( value1 , value2 ), упомянутые выше, могут быть любой строкой или любым из типов данных, таких как list, float, string и т. Д. Другие аргументы включают разделитель ( sep ), используемый для разделения значений, заданных в качестве аргументов, тогда как аргумент end по умолчанию является символом новой строки \n . Именно по этой причине при каждом вызове функции print() курсор перемещается на следующую строку.

В Python 3.x самый простой способ печати без новой строки-это установить аргумент end в виде пустой строки, то есть " . Например, попробуйте выполнить следующий фрагмент кода в интерпретаторе Python:

print("I am a sentence", "I am also a sentence")

Интерпретатор выдаст следующее:

I am a sentence I am also a sentence
>>>

Мы печатаем две строки, поэтому Python будет использовать значение sep , пустое пространство по умолчанию, чтобы напечатать их вместе. Python также добавляет символ новой строки в конце, поэтому приглашение интерпретатора переходит в конечную строку.

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

print("I am a sentence", "I am also a sentence", sep="; ", end="")

Выполнив его в интерпретаторе, вы получите результат, напоминающий:

I am a sentence; I am also a sentence>>>

Здесь произошли две вещи – разделитель между двумя строками теперь также включает точку с запятой. Приглашение интерпретатора также появляется в той же строке, потому что мы удалили автоматически добавляемый символ новой строки.

Печать без новой строки в Python 2.X

Для более ранних версий Python – меньше 3, но больше 2.6 – вы можете импортировать print_function из модуля __future__ . Это переопределит существующее ключевое слово print с помощью функции print () , как показано ниже:

from __future__ import print_function

print("I am a sentence", "I am also a sentence", sep="; ", end="")

Это также даст результат:

I am a sentence; I am also a sentence>>>

Вот как вы можете использовать функцию Python версии 3 print() в Python 2.x.

Использование stdout.писать()

Модуль sys имеет встроенные функции для записи непосредственно в файл или tty . Эта функция доступна для версий Python 2.x и 3.x. Мы можем использовать метод write() объекта stdout модуля sys для печати на консоли следующим образом:

import sys

sys.stdout.write("I am a line")

Давайте выполним это и посмотрим на результат:

I am a line>>>

Хотя это дает результат того, чего мы пытаемся достичь, существует довольно много различий между функцией write() и функцией print () . Функция print() может печатать несколько значений одновременно, может принимать нестроковые значения и более дружелюбна к разработчикам.

Вывод

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