パイソンでは、私が言うなら
print 'h'
文字 h と改行を取得します。私が言うなら
print 'h',
文字hが表示され、改行はありません。私が言うなら
print 'h',
print 'm',
文字 h、スペース、および文字 m を取得します。Python がスペースを出力しないようにするにはどうすればよいですか?
print ステートメントは同じループの異なる反復であるため、+ 演算子だけを使用することはできません。
パイソンでは、私が言うなら
print 'h'
文字 h と改行を取得します。私が言うなら
print 'h',
文字hが表示され、改行はありません。私が言うなら
print 'h',
print 'm',
文字 h、スペース、および文字 m を取得します。Python がスペースを出力しないようにするにはどうすればよいですか?
print ステートメントは同じループの異なる反復であるため、+ 演算子だけを使用することはできません。
import sys
sys.stdout.write('h')
sys.stdout.flush()
sys.stdout.write('m')
sys.stdout.flush()
sys.stdout.flush()
そうしないと、テキストがバッファに保持され、表示されないため、呼び出す必要があります。
Greg の言うとおりです。sys.stdout.write を使用できます。
おそらく、アルゴリズムをリファクタリングして <whatevers> のリストを蓄積することを検討する必要があります。
lst = ['h', 'm']
print "".join(lst)
または、次のように使用します+
。
>>> print 'me'+'no'+'likee'+'spacees'+'pls'
menolikeespaceespls
すべてが連結可能なオブジェクトであることを確認してください。
Python 2.5.2 (r252:60911, Sep 27 2008, 07:03:14)
[GCC 4.3.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print "hello",; print "there"
hello there
>>> print "hello",; sys.stdout.softspace=False; print "there"
hellothere
しかし、実際には、sys.stdout.write
直接使用する必要があります。
完全を期すために、もう 1 つの方法は、書き込みの実行後にソフトスペース値をクリアすることです。
import sys
print "hello",
sys.stdout.softspace=0
print "world",
print "!"
版画helloworld !
ただし、ほとんどの場合、 stdout.write() を使用する方がおそらく便利です。
これはばかげているように見えるかもしれませんが、最も単純なようです:
print 'h',
print '\bm'
コンソールのコントロールを取り戻しましょう! 単に:
from __past__ import printf
含まれる場所__past__.py
:
import sys
def printf(fmt, *varargs):
sys.stdout.write(fmt % varargs)
それから:
>>> printf("Hello, world!\n")
Hello, world!
>>> printf("%d %d %d\n", 0, 1, 42)
0 1 42
>>> printf('a'); printf('b'); printf('c'); printf('\n')
abc
>>>
おまけ: が気に入らない場合はprint >> f, ...
、この機能を fprintf(f, ...) に拡張できます。
sys.stdout.write
(Python 2では)唯一の堅牢なソリューションです。Python 2 の印刷は正気ではありません。次のコードを検討してください。
print "a",
print "b",
これにより が出力されa b
、末尾にスペースが出力されているのではないかと疑われます。しかし、これは正しくありません。代わりにこれを試してください:
print "a",
sys.stdout.write("0")
print "b",
これは印刷されますa0b
。それをどう説明しますか?スペースはどこに行ったのですか?
ここで実際に何が起こっているのか、まだよくわかりません。誰かが私の最善の推測を見てくれませんか:
,
に末尾がある場合のルールを推測する私の試みprint
:
まず、(Python 2 では) 空白 (スペースもprint ,
改行も) を出力しないと仮定しましょう。
print
ただし、Python 2 は印刷方法に注意を払いsys.stdout.write
ます。を 2回連続して呼び出すとprint
、Python は 2 つの間にスペースを入れようとします。
import sys
a=raw_input()
for i in range(0,len(a)):
sys.stdout.write(a[i])