Печать нескольких строк в одной команде печати отличается от печати их с использованием нескольких команд печати - PullRequest
0 голосов
/ 19 июня 2019

Почему вызов первой печати приводит к выводу, отличному от вызова следующих четырех? Что здесь происходит?

crates = 5
gap = 10

print(crates * ' ', crates * '#', gap * ' ', crates * '#')

print("differs from:")

print(crates * ' ', end = '')
print(crates * '#', end = '')
print(gap * ' ', end = '')
print(crates * '#')

1 Ответ

1 голос
/ 19 июня 2019

Из документов: https://docs.python.org/3/library/functions.html#print

print (* objects, sep = '', end = '\ n', file = sys.stdout, flush = False)

Печать объектов в файл текстового потока, разделенных sep и последующим end.sep, end, file и flush, если они есть, должны быть заданы в качестве аргументов ключевых слов.

В первом случае печать нескольких строк, разделенных запятой в print, добавляет явный пробел ' 'между ними, что происходит из-за аргумента печати по умолчанию sep=' ', который разделяет несколько печатаемых элементов с помощью пробела

In [124]: print('hello','world')                                                                                                                             
hello world

Во втором случае, установка end = '' гарантирует, что строка не будет завершенапо новой строке \n (согласно аргументу по умолчанию end='\n'), но по пустому символу

In [130]: print('hello',end='') 
     ...: print('world',end='')                                                                                                                              
helloworld

Выполнение вашего примера в вопросе дает нам

      #####            #####
differs from:
     #####          #####

Гдевы видите дополнительный пробел ' ', добавленный в первую строку, но не во вторую строку, и вторая строка не заканчивается новой строкой, а пустым символом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...