2016-08-24 5 views
2

私は、進行状況をコンソールに表示するプログラムを持っています。 20ステップごとに10 20 30などのステップ数を印刷しますが、この中にはドットが印刷されます。Pythonで 'タイト'な点を水平に印刷するには?

0 . . . . . . . . . 10 . . . . . . . . . 20 . . . . . . . . . 30 

私はこれがタイトになりたい:これは、最後にカンマで

 if epoch % 10 == 0: 
      print epoch, 
     else: 
      print ".", 

をprint文を使用して印刷した。残念ながら、私はこのように、ドットが互いに離れて印刷されていることに気づきました次のように、:Visual Basicの言語で

0.........10.........20.........30 

を我々はコンマの代わりにprint文の最後にセミコロンを追加した場合、我々は、このフォームを得ることができます。 Pythonで同様のやり方をしているのですか、より詳細な出力を得るためのウォークスルーはありますか?

事前のおかげで...

---編集---すべての感謝と答えた人全てに関して 、私はそれらのいくつかは「エポック」の変化がタイムリーに起こると考えられていることに気づきました。実際には、いくつかの反復を終えた後に起こり、数分から数分かかる場合があります。しかし、すべての寄稿者に感謝します。

+0

あなたは改行ではないスペースを取得することを意味するので、OPが望んでいるものを行いません。 – solidpixel

答えて

5

あなたはフォーマットをより細かく制御を取得したい場合は、あなたがいずれかを使用する必要があります。代わりにprintの..

import sys 
sys.stdout.write('.') 
sys.stdout.flush() # otherwise won't show until some newline printed 

、またはPythonの3印刷機能を使用します。

2と同じ効果があり
print('.', end='', flush=True) 

:あなたはキーワード引数flushを渡すことができるのPython 3では

from __future__ import print_function 
print('.', end='') 

:これは、後でとしてPython 2.xのビルドの中で、将来の輸入として提供されています上記のsys.stdoutの行。ここで

+0

あなたの答えは@ Isogen74ありがとうございます。Python3の印刷機能の使い方はよかったようですが、試してみると、プログラム全体でそれぞれのprint文にはたくさんのエラーがあります。両方のprint文(Py2とPy3から)を並べて使用できますか? –

+0

同じファイルにありません - "from __future__"は、古いセマンティクスから新しいセマンティクスへの "print"の意味を変更します。 – solidpixel

1
import itertools 
import sys 
import time 


counter = itertools.count() 


def special_print(value): 
    sys.stdout.write(value) 
    sys.stdout.flush() 


while True: 
    time.sleep(0.1) 
    i = next(counter) 
    if i % 10 == 0: 
     special_print(str(i)) 
    else: 
     special_print('.') 
+0

あなたの答え、特にspecial_print機能のための@turkusありがとう。 –

+0

Brother @Turkus、あなたの答えは選択されるべきですが、Isogen74はあなたの2分前に答えるので、私は彼に承認を与えました。将来の貢献への幸運。 –

+0

@MohammadElNesrはそれを手に入れました。 – turkus

1

が可能なソリューションです:カンマを削除

import time 
import sys 

width = 101 

for i in xrange(width): 
    time.sleep(0.001) 
    if i % 10 == 0: 
     sys.stdout.write(str(i)) 
     sys.stdout.flush() 
    else: 
     sys.stdout.write(".") 
     sys.stdout.flush() 

sys.stdout.write("\n") 
+0

お使いのソリューションのおかげで@BPL。 –

関連する問題