242

パイソンでは、私が言うなら

print 'h'

文字 h と改行を取得します。私が言うなら

print 'h',

文字hが表示され、改行はありません。私が言うなら

print 'h',
print 'm',

文字 h、スペース、および文字 m を取得します。Python がスペースを出力しないようにするにはどうすればよいですか?

print ステートメントは同じループの異なる反復であるため、+ 演算子だけを使用することはできません。

4

15 に答える 15

300

Python 3では、次を使用します

print('h', end='')

エンドラインターミネーターを抑制し、

print('a', 'b', 'c', sep='')

アイテム間の空白区切りを抑制します。のドキュメントを参照してください。print

于 2008-10-31T22:44:14.170 に答える
202
import sys

sys.stdout.write('h')
sys.stdout.flush()

sys.stdout.write('m')
sys.stdout.flush()

sys.stdout.flush()そうしないと、テキストがバッファに保持され、表示されないため、呼び出す必要があります。

于 2008-10-31T22:35:49.363 に答える
44

Greg の言うとおりです。sys.stdout.write を使用できます。

おそらく、アルゴリズムをリファクタリングして <whatevers> のリストを蓄積することを検討する必要があります。

lst = ['h', 'm']
print  "".join(lst)
于 2008-10-31T22:53:52.027 に答える
27

または、次のように使用します+

>>> print 'me'+'no'+'likee'+'spacees'+'pls'
menolikeespaceespls

すべてが連結可能なオブジェクトであることを確認してください。

于 2009-01-04T11:27:42.423 に答える
19
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直接使用する必要があります。

于 2008-11-01T00:21:28.450 に答える
17

完全を期すために、もう 1 つの方法は、書き込みの実行後にソフトスペース値をクリアすることです。

import sys
print "hello",
sys.stdout.softspace=0
print "world",
print "!"

版画helloworld !

ただし、ほとんどの場合、 stdout.write() を使用する方がおそらく便利です。

于 2008-11-01T00:43:51.040 に答える
13

これはばかげているように見えるかもしれませんが、最も単純なようです:

    print 'h',
    print '\bm'
于 2013-12-19T09:32:40.503 に答える
8

コンソールのコントロールを取り戻しましょう! 単に:

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, ...) に拡張できます。

于 2009-06-24T04:26:03.730 に答える
0

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 つの間にスペースを入れようとします。

于 2014-12-04T13:41:52.800 に答える
-1
import sys
a=raw_input()
for i in range(0,len(a)):
       sys.stdout.write(a[i])
于 2015-04-18T07:21:47.273 に答える