Python3で改行なしでのprint()関数やC言語風のprintf関数の作り方

スポンサーリンク

改行せずにコンソールに出力する方法は、いろいろあります。

早速、これらの方法のいくつかを見てみましょう。


スポンサーリンク

1. print()の使用

キーワード引数 end (終了文字) を適切に設定することで、print() 関数を使用してこれを実現することができます

デフォルトでは、これは改行文字(emptin)です。

そこで、最後に改行文字を表示しないようにこれを変更しなければなりません。

この選択には多くのオプションがあります。

スペースで区切られた文字列を表示するために、スペースを使うことができる。

a = "Hello"
b = "from Python"
 
print(a, end=' ')
print(b)

これは、改行の代わりにスペースで区切られた文字列 ab を表示します。

結果は以下の通りです。

Hello from Python

また、空の文字列を使用すれば、文字列を隙間なく連続して表示することもできます。

出力

a = "Hello"
b = "from Python"
 
print(a, end='')
print(b)

結果は以下の通りです。

Hellofrom Python

2. リストの要素を改行せずに表示する

リストを反復処理するときに、そのすべての要素を同じ行に表示する必要があることがあります。

そのような場合には、前と同じように end キーワード引数を使用して、ロジックを再利用します。

a = ["Hello", "how", "are", "you?"]
 
for i in a:
    print(i, end=" ")

結果は以下の通りです。

Hello how are you?

3. sys モジュールの使用

sys` モジュールを使って、改行なしの印刷をすることもできます。

具体的には、 sys.stdout.write() 関数を使うことで、コンソールに改行なしで書き込むことができます。

import sys
sys.stdout.write("Hello from Python.")
sys.stdout.write("This is printed on the same line too!")

結果は以下の通りです。

Hello from Python.This is printed on the same line too!

4. C 言語風の printf() 関数の作成

Python で独自の printf() 関数を作成することもできます。

そうです、これはモジュール functools を使うことで可能です。

print()のキーワード引数endに同じロジックを使用して、printf()` 関数を作成してみましょう!

import functools
 
# Create our printf function using
# print() invoked using the end=""
# keyword argument
printf = functools.partial(print, end="")
 
# Notice the semicolon too! This is very familiar for a
# lot of you!
printf("Hello!");
printf("This is also on the same line!");

結果は以下の通りです。

Hello!This is also on the same line!

これにセミコロンを加えて(Pythonコンパイラは文句を言いません)、C言語の printf() 関数を元のように復活させることもできます!


タイトルとURLをコピーしました