2017-04-15 40 views
1

的代碼是這樣的:如何在同一行上打印這些輸出?

for i in range(0, 20): 
     print(random.choice(string.ascii_letters + string.digits + string.punctuation)) 

唉,它打印在新的一行的每個字符。我如何讓他們打印一個?

+3

'打印( 「... 」結束=「 」)'(假設的Python 3)或'sys.stdout.write函數(「 ...」)' – Vallentin

+0

在蟒2.7放的情況下,在表達的結尾。打印var, –

回答

1

有幾種選擇:

  • print(..)end說法。如果您將其設置爲空字符串,則不會打印換行符而不是

    所以:

    options = string.ascii_letters + string.digits + string.punctuation 
    
    for i in range(0, 20): 
        print(random.choice(options),end='')

    (我介紹了一個變量options,以使其更具可讀性)

  • 可以先構建整個結果與''.join()和打印:

    print(''.join(random.choice(options) for _ in range(20)))

    這裏<expr> for <var> in <iterable>是一個生成器:它將生成20個隨機值(在options之外)和jo在他們在一起。

0

另一種方法是使用這樣的表達:

chars = [random.choice(options) for _ in range(20)] 

,只是事後打印的字符:

print(chars) 

生成的輸出可能是這樣的:

[6, 9, 5, 79, 78, 9, 2, 7, 9, 3, 3, 7, 9, 9, 6, 5, 78, 79, 5, 78] 

給出了這樣一個選項:

options = [1,2,3,4,5,6,7] + [9,78,9,78,79,98,7]