【问题标题】:python print one line same spacepython打印一行相同的空间
【发布时间】:2013-02-09 16:05:36
【问题描述】:

我需要在同一个地方打印“ok”。有什么办法吗?

我找到了解决方案,但它们无法正确使用 IDLE:

 while (count < 9):
      if statusm == "<Status>OK</Status>":
         print "ok", 

我希望每个 'ok' 都在同一行。谢谢!

【问题讨论】:

  • 同一个地方是什么意思?
  • 需要更多信息来回答这个问题。你所说的“同一个地方”是什么意思,你在哪里打印?一个文件,一个 Windows 终端?
  • 是的 windows 终端代码打印 ok ok ok ok ok without the , prints ok new line and other ok 我只需要一个 ok 没有更多
  • @Gerswin Lee 请您以易于理解的方式重新表述您的句子吗? “windows 终端代码打印 ok ok ok ok ok without the , prints ok new line”:这到底是什么意思???
  • 完成,我的错误是我使用 IDLE

标签: python loops printing


【解决方案1】:

这样的?

代码:

for i in range(5):
    print '\b\b\bok',

或者,如果您的 'ok' 在行首,您可以使用单个 '\r' 代替:

for i in range(5):
    print '\rok',

输出:

ok

【讨论】:

  • 一般情况下,'\r' 会倒退到行首。
  • @GerswinLee 看起来 Windows 终端不喜欢退格字符。你可以试试\r,但我怀疑结果会一样。
  • @GerswinLee this question 似乎建议退格应该在 Windows 终端中工作。你能复制那里显示的结果吗?
【解决方案2】:

例如,如果您想在完全相同的位置打印“OK”,您可以这样做:

for i in range(0, 10000):
    print("\rOK", end='')

结果:

OK

在同一个控制台位置上写了 10000 次。

【讨论】:

  • 似乎不适用于 python 2.7 + ipython。有什么需要改变的吗?
【解决方案3】:

如果您需要一次打印一份,请使用其他答案之一。 这将一次打印它们:

my_var = ''
while (count < 9):
      if statusm == "<Status>OK</Status>":
         my_var += 'ok'
print my_var

【讨论】:

    【解决方案4】:

    那个? :

    from sys import stdout
    
    count = 1    
    statusm = "<Status>OK</Status>"
    while (count < 9):
          if statusm == "<Status>OK</Status>":
              stdout.write('OK')
              count += 1
    

    编辑

    我认为在 IDLE 中只做一个 OK 是不可能的。但下面的代码将让您了解控制台中的可能性:

    from sys import stdout
    from time import sleep
    
    several = ("<Status>OK</Status>",
               "<Status>bad</Status>",
               "<Status>OK</Status>",
               "<Status>bad</Status>",
               "<Status>yes</Status>",
               "<Status>OK</Status>",
               "<Status>none</Status>",
               "<Status>bad</Status>",
               "<Status>OK</Status>",
               "<Status>yes</Status>")
    
    good = ('OK','yes')
    
    for i,status in enumerate(several):
        y = str(i)
        stdout.write(y)
        stdout.write(' OK' if any(x in status for x in good) else ' --')
        sleep(1.0)
        stdout.write('\b \b\b \b\b \b')
        for c in y:  stdout.write('\b \b')
    

    结果

    OKOKOKOKOKOKOKOK
    

    【讨论】:

    • 只有一个,也许是不可能的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    相关资源
    最近更新 更多