2017-04-15 41 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]