2015-03-23 1 views
-1
for i in range(10): 
    print(i, sep = ',', end = '') 

Это должно быть 0,1,2,3,4,5,6,7,8,9, но правда в том, enter image description here sep не работает. Благодаря!Почему «seq» не работает в цикле?

+3

Вы только печать одного числа в то время, нет ничего, чтобы отделить, насколько 'print' обеспокоен. – deceze

+0

Вы должны сделать что-то вроде: '','. Join ([str (i) для i в диапазоне (10)]). Другие уже упоминали, почему ваша версия не работает. – Maroun

+0

понимать, спасибо. – zynl

ответ

2

Необязательный sep аргумент используется для определения разделителя между запятыми значений аргумента, которые подаются к параметру printobjects. objects - параметр переменного аргумента, что означает, что он может принимать любое количество аргументов (или распакованный итерабельный).

От docs:

печати (* объекты, Сентябрь =»», конец = '\ п', файл = sys.stdout, вровень = False)

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

Все аргументы без ключевого слова преобразуются в строки, такие как str(), и , записанные в поток, разделенные sep и их конец. Оба sep и конец должны быть строками; они также могут быть None, что означает использование значений по умолчанию . Если объекты не заданы, print() будет просто писать конец.

Лучший способ написания кода будет следующее:

print(*range(10), sep=',', end='') 

Это использует * оператор распаковывать итерацию и кормить каждого из его элементов в качестве аргументов функции print.

Это эквивалентно:

print(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, sep=',', end='') 
1

В этом цикле i всегда является целым числом в одну цифру, и это не может быть разделено.

Было бы так:

print("1", sep=',', end='') 
print("2", sep=',', end='') 
print("3", sep=',', end='') 
... 
+0

Выполняет ли «sep» последовательность? – zynl

+1

'sep' означает seperator, и он работает только, если он может что-то отделить. Так что да, ему нужно что-то, что он может перебрать. Что вы ожидаете, когда вы укажете 'print' для разделения« 1 »? –

+0

поймите, спасибо. – zynl

Смежные вопросы