2016-10-03 2 views
1
print('2**', n, ' + ', sep='', end='') 

Привет печати Приведенная выше в цикле, так что выход заканчивает тем, чтоКак избавиться от лишнего знака + в операторе печати, Python

2 ** 10 + 2 ** 7 + 2 ** 6 + 2 ** 4 + 2 ** 1 + 

Мне нужно избавиться от последнего плюс в заявлении, но не знаю, как это сделать.

+1

Готовимся список строк, содержащий все элементы, а затем вызвать '«+».join (элементы) 'на этом будет трюк. – Elijan9

+1

Например, 'print ('+' .join (['2 **% s'% n для n в somelist]))'. '.join' добавит только строку между связанными элементами. – Elijan9

ответ

0

Вы можете сохранить строку для печати в переменной в цикле, а затем после окончания цикла удалить дополнительный плюс путем нарезки с помощью to_print[:len(to_print)-1] И затем распечатать to_print. Здесь to_print - это текст, который нужно сохранить в цикле. Вместо того, чтобы печатать его, а затем распечатать его в конце после нарезки, как я показал выше.

0

. Проверьте, используете ли вы последний элемент и используете другой оператор печати (без окончательного '+') или сначала создайте свой вывод в списке и присоединитесь к списку перед печатью.

output = [] 
some_loop: 
    output.append('2**%i' % n) 

print(' + '.join(output)) 
1

Это довольно «общая» проблема, и ее часто решают с помощью метода «.join». Я предполагаю, что у Вас есть список целых чисел, так что все, что вам нужно сделать, это:

powers = [10, 7, 6, 4] 
print(' + '.join(['2 ** {n}'.format(n= n) for n in powers])) 
+0

Нет необходимости в 'str (n)' здесь - 'str.format' будет использовать' str' по умолчанию для своих входов .... –

+0

В порядке. Мой плохой, отредактированный. – Nf4r

2

Если вы отделяете экспонентам, как вы, вероятно, сделали, вы можете использовать str.join():

>>> exponents = (10, 7, 6, 4, 1) 
>>> print(' + '.join('2**{}'.format(n) for n in exponents)) 
2**10 + 2**7 + 2**6 + 2**4 + 2**1 

Это будет работать как в Python 2 & 3. Вы можете также использовать функцию print() с sep аргументом:

>>> print(*('2**{}'.format(n) for n in exponents), sep=' + ') 
2**10 + 2**7 + 2**6 + 2**4 + 2**1 
0

Вы могли бы сделать диафрагменное ollowing и адаптации его к длине

n = 1 
for i in range(0,10): 
    if i < 9: 
     print('2**', n, ' + ', sep='', end = '') 
    else: 
     print('2**', n, sep='', end = '') 
0

join() петля помогает в этом случае:

exponents = [10, 7, 6, 4, 1] 
out = [] 
for n in exponents: 
    out.append('2 ** %d' % n) 
print ' + '.join(out) 
Смежные вопросы