【问题标题】:How to print these outputs on the same line?如何在同一行打印这些输出?
【发布时间】:2017-04-15 16:36:16
【问题描述】:

代码是这样的:

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

唉,它将每个字符打印在新行上。如何让它们打印在一个上?

【问题讨论】:

  • print("...", end="")(假设 Python 3)或sys.stdout.write("...")
  • 在 python 2.7 的情况下,放在表达式的末尾。打印变量,

标签: python random printing range line


【解决方案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(<b>''.join(</b>random.choice(options) <b>for _ in range(20)</b>))

    这里的&lt;expr&gt; for &lt;var&gt; in &lt;iterable&gt; 是一个生成器:它将生成20 个随机值(来自options)并将它们连接在一起。

【讨论】:

    【解决方案2】:

    另一种方法是使用这样的表达式:

    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]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-16
      • 1970-01-01
      • 2012-08-15
      • 2021-07-10
      • 2011-02-23
      • 2014-08-11
      相关资源
      最近更新 更多