Почему разделитель запятой возвращает мне запятую, когда я его печатаю?

Я пытаюсь напечатать текст после завершения всех вычислений, говоря: «Этот список содержит x чисел. Я пытался использовать как «+», так и «,», чтобы отделить строку от переменной, проблема в том, что когда я пытаюсь использовать «+» в качестве разделителя, отображается сообщение: SyntaxError: invalid syntax. Кроме того, если я попытаюсь использовать ',' в качестве разделителя, я получу еще один ',' в конце моего печатного сообщения. Я хочу, чтобы это ',' отделялось только в коде, я не хочу, чтобы оно отображалось в печатном сообщении.

Я пытался заменить оба разделителя, также пытался найти ответы в гугле. Это мой третий день обучения, поэтому я просто не знаю, как именно искать такую ​​​​информацию. Вся информация, которую я нашел, не могла прояснить, что я должен сделать, чтобы решить эту проблему так, как я хотел.

print('Number of elements: ', *(colection), sep = ', ')

Как теперь выглядит сообщение?

Numbers in the list: , 1, 2, 3

Окончательный вид, который я хочу, чтобы он имел:

Numbers in the list: 1, 2, 3

person Alberto Ribeiro    schedule 23.06.2019    source источник
comment
print('Number of elements: ', *(colection), sep = ', ') не может напечатать Numbers in the list: , 1, 2, 3. Пожалуйста, будьте последовательны, а также приведите минимально воспроизводимый пример.   -  person John Coleman    schedule 24.06.2019
comment
@MarkMeyer Дело в том, что 'Number of elements: ' и 'Numbers in the list: ' - разные строки.   -  person John Coleman    schedule 24.06.2019
comment
@JohnColeman ха! Да print() этого еще не делает!   -  person Mark    schedule 24.06.2019


Ответы (2)


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

Предполагая, что colection — это список чисел, вы можете просто использовать два вывода и подавить новую строку в первом:

colection = [1,2,3]
print('Números da coleção: ',end='')
print(*colection,sep=', ')

Выход:

Números da coleção: 1, 2, 3
person Mark Tolonen    schedule 24.06.2019

Когда вы расширяете print('Number of elements: ', *(colection), sep = ', '), на самом деле вы оцениваете print('Number of elements: ', 1, 2, 3, sep = ', ').

Это означает, что у вас есть 4 элемента и 3 запятые. Одна из запятых находится между первой строкой и 1.

Я думаю, что вы хотите не использовать аргумент-разделитель в печати, а вместо этого использовать ', '.join(colection), например, так:

print('Number of elements: ', ', '.join([str(i) for i in colection]))
person Lee Garcon    schedule 24.06.2019
comment
Если colection представляет собой список чисел, вам, вероятно, потребуется преобразовать их в строки перед вызовом join. - person Mark; 24.06.2019
comment
Да, забыл об этом на секунду ;) Теперь все изменилось. - person Lee Garcon; 24.06.2019
comment
Кроме того, ', '.join([str(i) for i in colection]) можно заменить более простым ', '.join(str(i) for i in colection), так как .join() можно напрямую передать в выражение генератора. Тем не менее, +1 за хороший ответ. - person John Coleman; 24.06.2019
comment
Понял;) все еще немного новичок в python - person Lee Garcon; 24.06.2019