1. ホーム
  2. python

[解決済み] 改行なしの印刷(print 'a', )でスペースが印刷されますが、どのように削除しますか?

2022-08-13 10:34:32

質問

このようなコードがあります。

>>> for i in xrange(20):
...     print 'a',
... 
a a a a a a a a a a a a a a a a a a a a

出力したい 'a' を出力したいが ' ' のようにします。

aaaaaaaaaaaaaaaaaaaa

可能でしょうか?

どのように解決するのですか?

結果を得るには、いくつかの方法があります。もし、あなたのケースのための解決策が欲しいだけなら、次のものを使ってください。 文字列の乗算 として として のように記述します。これは、それぞれの print ステートメントが同じ文字列を表示する場合にのみ動作します。なお、任意の長さの文字列の乗算でも動作します(例えば 'foo' * 20 は動作します)。

>>> print 'a' * 20
aaaaaaaaaaaaaaaaaaaa

一般的にこれを行いたい場合は、文字列を構築し、それを一度印刷します。これは文字列のために少しメモリを消費しますが、1回だけ print . を使用した文字列の連結に注意してください。 += を使った文字列の連結は、連結する文字列のサイズに比例するようになったので、高速になります。

>>> for i in xrange(20):
...     s += 'a'
... 
>>> print s
aaaaaaaaaaaaaaaaaaaa

あるいは、もっと直接的に sys.stdout . write() は、どの print はその周りのラッパーです。これは、与えられた生の文字列だけを、何のフォーマットもなしに書き出します。20 の終わりでも改行されないことに注意してください。 a s.

>>> import sys
>>> for i in xrange(20):
...     sys.stdout.write('a')
... 
aaaaaaaaaaaaaaaaaaaa>>> 

Python 3 では print ステートメントを print() 関数に変更します。 を設定することができます。 end パラメータを設定することができます。からインポートすることで、>=2.6で使用することができます。 __future__ . 3.xを使ったことがない人には少し分かりにくいかもしれませんが、3.xの良さを味わうことができます。

>>> from __future__ import print_function
>>> for i in xrange(20):
...     print('a', end='')
... 
aaaaaaaaaaaaaaaaaaaa>>>