【问题标题】:dynamic way to print same line multiple times in python在python中多次打印同一行的动态方法
【发布时间】:2016-01-06 22:18:49
【问题描述】:

我有一些操作,我想在完成每个操作后显示一条分隔线。 (为了更好的可读性)

我的代码:

 if __name__ == '__main__':
     line='-'*100

     print line
     #do something

     print line
     #do something

     print line
     #do something

这正是我想要的。但这里的问题是我有 100 次手术。稍后,如果我想停止显示线条,我必须从各处删除print line。

另一个解决方案可能是管理一些全局标志来检查是否显示行。

对于这个问题还有其他简单而动态的解决方案吗?

【问题讨论】:

  • 您实际上不必从任何地方删除print line。也许只是设置line = ''。
  • def print_separator(): print(line) 和后者用pass 替换函数的主体,或者当你想摆脱分隔符时添加一个条件运算符。

标签: python python-2.7 printing


【解决方案1】:

您可能陷入了复制粘贴相同内容 100 次的陷阱。我不能评论和问,但如果你# do somethings是一样的,你可以这样做:

if __name__ == "__main__":
    line = '-' * 100
    for _ in range(<how many times>):
        print line
        # do something

如果它们不一样,它们应该是真正的函数,因为在函数之外不应该有太多代码。例如,

if __name__ == '__main__':
    line = '-' * 100

    print line
    function_a()

    print line
    function_b()

    print line
    function_c()

    # etc

变成:

if __name__ == '__main__':
    line = '-' * 100

    for function in (function_a, function_b,  # etc
                     function_c):
        print line
        function()

【讨论】:

  • 第二种解决方案(循环函数元组)看起来不错。但它并不适合所有任务。
  • @Artyer : 所有 # 做某事都是不同的功能,并将不同的输出打印到控制台。
  • @Dave 第二种解决方案是否合适?否则,恐怕您将不得不使用全球标志。
【解决方案2】:

在顶部添加一个布尔变量并使用它来控制打印语句:

print_lines = True  # Change to False when you no longer want to print
if print_lines:
    print line

【讨论】:

  • 我已经在我的问题中提到了这个作为“另一种解决方案”。我不想把条件放在 100 次。
  • 抱歉,一定是在阅读您的问题时错过了它。这是我用于这类事情的最简单的解决方案。
猜你喜欢
  • 2014-04-23
  • 1970-01-01
  • 2011-08-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-12
  • 2016-03-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多