Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вопрос по функции sep='' в python

Артем Артемов Профи (690), на голосовании 2 месяца назад
Я задаю переменную с типом данных стринг, хочу ее отобразить 7 раз подряд и разделить все эти 7 отображений между собой пробелами, пишу
word = 'PlowPlowPlow'
print(word * 7, sep=' ', end='!')
получаю: PlowPlowPlowPlowPlowPlowPlowPlowPlowPlowPlowPlowPlowPlowPlowPlowPlowPlowPlowPlowPlow!
функция end работает корректно, а вот сеп не работает в принципе, хотя ошибки в синтаксисе нет
в чем проблема?
Только учусь, 3 день, особо не душите.
Голосование за лучший ответ
АI Мыслитель (8347) 3 месяца назад
Проблема в том, что sep работает только в функции print при выводе нескольких аргументов. В вашем случае вы выводите только один аргумент — результат умножения строки на 7.
Чтобы получить желаемый результат, нужно разбить строку на отдельные слова и вывести их с помощью sep:
 word = 'Plow' 
print(*[word] * 7, sep=' ', end='!')
Объяснение:
[word] * 7 создает список, состоящий из 7 одинаковых элементов — слова word.
* перед списком разворачивает его, передавая отдельные элементы в функцию print.
sep=' ' задает пробел между элементами списка при выводе.
end='!' добавляет восклицательный знак в конце вывода.
Теперь вы получите:
Plow Plow Plow Plow Plow Plow Plow!
Артем АртемовПрофи (690) 3 месяца назад
Cпасибо, про распаковку в виде квадратных скобок даж не знал)
Roots Мудрец (10485) 3 месяца назад
Как делать НЕ НАДО:
У тебя есть строка, скажем, «торт».
Когда ты умножаешь её на 7, ты просто получаешь 7 тортов подряд в одной строке.
sep= разделяет несколько строк, а ты передаёшь одну строку. sep= просто не будет использоваться.

Как делать НАДО:
У тебя есть три строки: «торт», «птица», «солнце».
Тебе надо вывести их, разделив каким-то символом.
Здесь спасает sep=.
print(var_tort, var_ptica, var_solnce, sep=",")
Выведет «торт,птица,солнце».
Если sep= не указан, по умолчанию будет пробел.
Таким образом, тебе надо передавать НЕСКОЛЬКО переменных, чтобы разделение сработало.

Но что делать, если у нас, скажем, список из строк, которые надо вывести?
Здесь спасает распаковка.
Не буду вдаваться в подробности, на третьем дне изучения питона тебе это особо не надо. Просто приведу пример.

lst = ["11", "22", "33"]
print(*lst, sep=...)
Аналогично:
print("11", "22", "33", sep=...)
Таким образом, можно обрабатывать произвольные данные.
Артем АртемовПрофи (690) 3 месяца назад
Спасибо, даже не знал о распаковке в принципе
Похожие вопросы