0

同じ場所に「OK」を印刷する必要があります。それを行う方法はありますか?

解決策を見つけましたが、IDLE で正しく動作しません。

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

同じ行にすべての「OK」が必要です。ありがとう!

4

4 に答える 4

3

このようなもの?

コード:

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

または、'ok' が行頭にある場合は、代わりに単一の '\r' を使用できます。

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

出力:

ok
于 2013-02-09T16:11:41.430 に答える
0

一度に 1 つずつ印刷する必要がある場合は、他の回答のいずれかを使用してください。これにより、一度にすべてが印刷されます。

my_var = ''
while (count < 9):
      if statusm == "<Status>OK</Status>":
         my_var += 'ok'
print my_var
于 2013-02-09T16:34:59.697 に答える
0

それか ?:

from sys import stdout

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

編集

IDLE で 1 つの 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
于 2013-02-09T16:12:59.077 に答える