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

喜print語句是一個循環,這樣的輸出最終被如何在打印語句擺脫額外的+號,Python的上述

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

我需要擺脫過去的加在聲明中,但不知道如何去做。

+1

準備一個包含所有元素的字符串列表,然後調用'「+」。加入(元素) '就可以做到這一點。 – Elijan9

+1

例如'print('+'.join(['2 **%s'%n for n in somelist]))'。 '.join'只會在adjecent元素之間添加它的字符串。 – 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

你可以做followi NG,並使之適應你的循環長度

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)