• Как использовать sep= в Pyton?

    nika_lime
    @nika_lime
    Все дело в том, что в команде print параметр sep по умолчанию равен пробелу sep = ' ', а параметр end по умолчанию равен переносу строки end = '\n'

    В цикле вы вызываете команду print несколько раз, и каждый раз срабатывают оба параметра по умолчанию.
    То есть вот этот код:

    spisok = [1, 2, '3']
    for x in spisok:
        print(x)


    Равносилен вот этому:

    spisok = [1, 2, '3']
    for x in spisok:
        print(x, sep = ' ', end = '\n')


    Если не указывается параметр команды print и значение этого параметра, то он назначается по умолчанию.

    То, что вы пытаетесь заставить сделать параметр sep на самом деле управляется параметром end. Так как параметр sep работает когда в команде print несколько аргументов, а у нас всего один. Циклом повторяется не аргумент внутри print, а весь print целиком. То есть каждый print вам будет переносить строку. Поэтому и вылезает перенос строки в выводе вот тут, а sep не срабатывает:

    print(x, sep=", ")  
    output:
    1
    2
    3


    Вот тут значение параметра end перестало быть переносом строки, поэтому аргумент выведен в одну строку x раз, но так как аргумент всего один, sep не срабатывает, он просто не нужен, команде print нечего перечислять.

    print(x, end=" ", sep=", ")
    output:
    1 2 3


    В итоге несложно догадаться, что значение ', ' надо передавать в параметр end (правда последний аргумент тоже выведется с запятой, т.к. end будет для него тоже срабатывать):

    print(x,  end=",  ")
    output:
    1, 2, 3,
    Ответ написан
    8 комментариев