Вы можете получить необходимый эффект, но на самом деле это не имеет особого отношения к умножению per se.
sep
аргумента print()
обеспечивает разделитель между не-именованными аргументами - например:
>>> print("spam", "eggs", "ham", sep=" | ")
spam | eggs | ham
Вы могли бы просто передать c
в print()
5 раз, чтобы получить результат, который вы ищете:
>>> c = "rabble"
>>> print(c, c, c, c, c, sep=" | ")
rabble | rabble | rabble | rabble | rabble
... но это неудобно и бесполезно, если вы не знаете заранее, сколько раз вам понадобится c
.
Чтобы обойти эту проблему, вы можете использовать argument unpacking - специальный синтаксис для передачи списка или другой последовательности к функции, как если бы элементы в нем были передаются как отдельные аргументы:
>>> s = ["spam", "eggs", "ham"]
>>> print(*s) # notice the *
spam eggs ham
Чтобы получить результат, который вы ищете, вы можете создать список на лету из 5 копий c
, и передать этот список с аргументом распаковки обозначения:
>>> print(*([c] * 5), sep = ' | ')
rabble | rabble | rabble | rabble | rabble
Обратите внимание, что вы мультипликативный список, содержащий c
на пять, а не c
. Вам может показаться полезным проверить, что на самом деле делает print(*(c * 5), sep = ' | ')
, и попытаться выяснить, почему (подсказка: строки также являются последовательностями).
Спасибо Zero, я попробовал код в конце (используя распаковку аргументов без добавления c в список), и он печатает каждую букву строки «сброд» с символом '|' строка, разделяющая каждую. Я думаю, что у меня есть лучшее понимание исходной проблемы, которая заключается в том, что print (c * 5) просто объединяет 5 строк и не дает точки прерывания, в которой '|' строка может быть вставлена. При использовании распаковки аргументов каждая буква является ее собственным элементом, а в списках каждая строка является ее собственным элементом, между которыми можно вставить разделитель. Еще раз спасибо. –