Секвенциальная печать в одну строку в скрипте: как решить
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Python 3 и более новые версии: используйте print(…, end='')
для этого. Параметр end=''
позволяет не выполнять автоматического перехода на новую строку после вывода.
print("Привет", end=' ')
print("Мир")
Таким образом, результат: Привет Мир
будет выведен в одну строчку. Наслаждайтесь! 🐳
Вывод без перехода на новую строку в Python 3
В Python 3, параметр end
функции print()
указывает, какой символ будет добавляться в конце каждого вывода. По умолчанию используется символ \n
, что означает переход на новую строку. Если необходимо осуществить вывод без перехода на новую строку, используйте пустую строку в качестве end
(''
).
print("Первый вызов print", end='')
print(" Второй вызов print")
Опция flush
функции print в Python 3
Функция print()
по умолчанию буферизует вывод, из-за чего при итеративном выводе могут возникать задержки. Для немедленной очистки буфера можно использовать параметр flush=True
.
print("Обработка...", end="", flush=True)
Так, проблемы с буферизацией никогда не заставят вас ждать! 💪
Вывод без перехода на новую строку в Python 2
Если вы работаете с Python 2, то для удаления автоматического перевода на новую строку достаточно добавить запятую в конце оператора print
.
print "Обработка...",
Таким образом удаляется переход на новую строку, одновременно добавляя пробел в конце, как выражение того, что Python 2 говорит нам: "Примите это, как компенсацию за непередовую версию".
Применение sys.stdout.write()
Для полного контроля над выводом, а также чтобы предотвратить добавление пробела в Python 2, следует использовать sys.stdout.write()
. Для немедленного вывода результата примените sys.stdout.flush()
.
import sys
sys.stdout.write("Обработка...")
sys.stdout.flush()
Возврат каретки для перезаписи последнего вывода
Символ возврата каретки ("\r"
) позволяет перезаписать последний вывод. Это особенно полезно при создании индикаторов выполнения задач или анимированных часов.
print("3...2...1... Подождите, давайте начнем снова!", end="\r")
Это словно карточка из "Монополии" — "Выйдите из тюрьмы бесплатно", когда нужно быстро исправить ошибку.
Визуализация
Каждый вызов функции print()
можно сравнить с добавлением товара в корзину покупок 🛒. Применение параметра end
аналогично заданию: "Я ещё не завершил!"
print("🍏", end='') # Добавляем в корзину яблоко
print("🍌", end='') # Кладём в корзину банан, но пока не заканчиваем покупки
print("🍓") # И в завершение добавляем клубнику – покупки совершены
Такой процесс покупок выглядит следующим образом:
Изначально: 🛒
Шаг 1: 🛒🍏
Шаг 2: 🛒🍏🍌
Результат: 🛒🍏🍌🍓
Использование символа "забой" при выводе
При посимвольном выводе вы можете использовать '\x08'
для возвращения на шаг назад. Это схоже с действием Ctrl + Z
при программировании.
import time
print("Загрузка", end='')
for _ in range(10):
print('.', end='', flush=True)
time.sleep(0.5) # Отдыхаем полсекунды
print('\x08', end='', flush=True) # Упс, ошибка! Используем забой
Создание пользовательских последовательностей вывода
Если функционал print()
не обеспечивает необходимый уровень контроля, используйте sys.stdout.write()
и '\r'
для создания своих собственных последовательностей вывода.
import sys
sys.stdout.write("Загрузка...\r")
Полезные материалы
- Your Guide to the Python print() Function – Real Python — подробное руководство по функции
print()
в Python. - sys — System-specific parameters and functions — Python 3.12.2 documentation — официальная документация для
sys.stdout
в Python. - time — Time access and conversions — Python 3.12.2 documentation — информация о работе со временем в Python.
- Python String format() Method — описание метода
format()
для строк в Python. - PEP 498 – Literal String Interpolation — информация об использовании f-строк в Python.
- Python end parameter in print() – GeeksforGeeks — описание параметра
end
функцииprint()
в Python.