質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

4回答

596閲覧

pythonのfor文中におけるprint()でend=を指定した時の動作

Julius_Novachro

総合スコア7

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/02/14 11:43

編集2020/02/14 11:51

python

1import time 2 3img = [1,2,3,4,5,6,7,8,9] 4 5i = 0 6for pic in img: 7    time.sleep(1) 8    i += 1 9    print(i)    #一回ごとに表示される 10 11j = 0 12for pic in img: 13    time.sleep(1) 14    j += 1 15    print(j, end='--') #終わった後にまとめて表示される 16```pythonにおいて配列の中をfor文で回すときに、print()を入れて一回回るごとに表示をさせたいのですが、end=で文末を指定するとfor文が回り終わった後に一括で表示されてしまいます。 17どうしたら一回ごとに表示してくれるでしょうか? 18以下にコードを示します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hayataka2049

2020/02/14 11:47

コードは<code>ボタンで挿入できるコードブロック内に入れるよう編集してください。
hayataka2049

2020/02/14 11:50

それ以外の方法ではインデントは全部消えます。
Julius_Novachro

2020/02/14 11:51

ありがとうございます 修正しました
hayataka2049

2020/02/14 11:57

私の回答より良い回答がついているので、どなたかのにBAを変えていただけると幸いです。
guest

回答4

0

flush= True を指定して見てください。

python

1 print(j, end='--', flush=True)

出力がバッファ化されるかどうかは通常 file で決まりますが、
flush キーワード引数が真ならストリームは強制的にフラッシュされます。
print - Python 標準ライブラリ

投稿2020/02/14 11:53

nico25

総合スコア830

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Julius_Novachro

2020/02/14 11:59

参考になりました。 ありがとうございます。
guest

0

print(j, end='--', flush=True)にてバッファをflushさせるとよいです。
参考:print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

投稿2020/02/14 11:50

can110

総合スコア38341

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Julius_Novachro

2020/02/14 11:58

うまく動作しました。 ありがとうございます。
guest

0

ベストアンサー

https://qiita.com/mmsstt/items/469a9346ce545709f53c

python

1print("#", flush=True)

としてみてください。

投稿2020/02/14 11:48

kazto

総合スコア7196

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Julius_Novachro

2020/02/14 11:57

うまく動作しました。 ありがとうございます。
guest

0

デフォルトの挙動では改行ごとに標準出力をフラッシュするからですね。

printを呼んだあとにsys.stdout.flush()を追加してください。シンプルな例はこのようなものです。

python

1import sys 2import time 3 4for _ in range(10): 5 print("a", end="") 6 sys.stdout.flush() 7 time.sleep(1) 8

投稿2020/02/14 11:49

hayataka2049

総合スコア30935

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hayataka2049

2020/02/14 11:56

皆さんの方法の方が良さそうだな……もし見てたらこれ以外をBAに選び直しておいてください。
Julius_Novachro

2020/02/14 11:58

丁寧な回答ありがとうございます うまく動作しました。
Julius_Novachro

2020/02/14 12:09

わざわざありがとうございます 最速だった方にかえさせていただきます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問