Pythonの書

print出力をsep引数でさらに自由に

今回はprint関数のsep引数についてみていきます。(´∀`*)

 

 

特徴 つまり、どゆこと?(´・ω・ ` )

sepはおそらくセパレータ(separator)の略ですね。

 

この引数は出力するオブジェクトを複数渡したときに、オブジェクトの間に出力する文字を指定できます。

 

 

サンプルプログラム 実際やってみるのが1番!(`・ω・´)キリッ

実際に試してみましょう。

 

sep_test.py

copy

#!/usr/bin/env python
#cording:UTF-8

a = "ham"
b = "egg"
c = "bacon"
print( a, b, c )
print( a, b, c, sep = ",spam," )

 

としてみました。

すると出力は、

 

console

copy

ham egg bacon
ham,spam,egg,spam,bacon

 

となりました。

 

1行目の出力と比較すると、2行目の出力は半角スペース1文字が”,spam,“に置き換わっているのがわかります。

 

 

前回軽く説明したエスケープシーケンスを指定することもできます。

 

sep_esc.py

copy

#!/usr/bin/env python
#cording:UTF-8
print( "def", "efg", "abc", "dbe", sep = "\b\b",
end = "ef" )

 

とすると、

 

console

copy

deadbeef

 

と出力されます。

 

end引数と組み合わせることでさらに自由に文字を出力できるようになりました。

 

これだけでもPythonのprintで出力したい形はかなり実現できるようになったと思います。(* ̄∇ ̄*)エヘヘ

 

 

しかし、C言語を経験された方の中には、これだけでは少し不満を感じている方もいるのではないでしょうか。

 

C言語を最初に勉強してきた私は最初にPythonのprintを使ったとき、かなり使いづらく感じました。

 

というのも、ここまで説明したprintの使い方では、C言語のprintf関数でよく使っていた”文字列への変数の埋め込み”ができないからです。

 

なので、最後にこの慣れた書き方をprint関数で実現する方法を、例を使って示します。

 

embeded_string.py

copy

#!/usr/bin/env python
#cording:UTF-8

a = "ham"
b = "egg"
c = "bacon"

print( "spam,%s,SPAM,%s,Spam,%s"%( a, b, c ), ",spam"*2 )

 

のようにプログラムすることで、

 

console

copy

spam,ham,SPAM,egg,Spam,bacon ,spam,spam

 

という出力が得られます。

 

うーん。spamの主張がかなり強いですね。(´Д`;)

 

とりあえずこのように%の後に変数の型を示す文字(s,c,d,fなど)、文字列の後に%と埋め込む変数を指定することで、sependを指定よりもさらに自由な出力ができるようになりました。

 

そしてその書き方はC言語のprintf関数とはわずかに異なりますが、かなり似たような書き方になっていると思います。

 

baconの後にだけ半角スペース1文字が入っていることからわかるように、今回の場合ではprintに渡したオブジェクトは2つで、変数を指定した埋め込み文字列は全体で1つのオブジェクトとして扱われています。

 

ついでに最後の“,spam”*2はPythonらしい書き方で、“,spam”を2つに複製する、という意味です。

 

 

これでPythonのprint関数を用いた出力方法についての話はとりあえず終わりになります。

 

1つでも参考になったところがあればうれしいです。

 

次からはいろんなオブジェクトの話をしていこうかと思っています。

 

ではまた~。(*・ω・)ノ

カテゴリー:,
%d人のブロガーが「いいね」をつけました。