Python format メソッド

Python学習10日目のマスターU(@Udemy11)です。

Catalinaをクリーンインストールしたあと、MacでもPythonを使える環境を整えようと思って、Anacondaをインストールしたり、Pycharmをインストールしたり、ターミナルを触ったりして、一時、迷宮に入り込んでしまいました。
Quitaなどを参照しながら、なんとか問題は解決したのですが、基本的なコマンドや仕組みをわかっていないと、解決にめちゃくちゃ時間を取られてしまいます。

今回はPATH(パス)ではまったのですが、この件については後ほど記事にしようと思っています。

さて、今日はformatメソッドの使い方です。

昨日の復習

昨日は、変数の入れ替えとリテラルと変数を数式で組み合わせて出力してみました。

itigo = 'strawberry'
beri = 'blue' + itigo[5:]
print(itigo, beri)
 
x = 'How are you?'
y = 'Hi'
print(y * 3 + 'Mike\n' + x)
print('Hello' * 2, x)

出力結果

strawberry blueberry
HiHiHiMike
How are you?
HelloHello How are you?

上部分は、itigoという変数にstrawberryを代入した後、beriという関数にblueとitigoのインデックス6以下の文字を加えて代入したものを出力しています。

下部分は、xとyにそれぞれ文章と単語を代入して、yを3回繰り返し、Mikeを足して改行したあとxを表示する出力と、Helloを2回繰り返したあとにxを加えて出力しています。

今のところ、どんな場面でこの使い方をするのかイメージできませんが、とにかく繰り返し入力して、規則を頭に入れていくことが大切です。

formatメソッド

Python format メソッド

formatがどんな役割を持っているのか理解せずに使っているので、間違った使い方をしているかもしれませんので、間違っているときはお知らせいただけると幸いです。

{}(bracesの波括弧)を使って、そのあとにformatで代入する文字を指定します。
講座では、いちいちprintを入力するのが面倒ということで、対話型のインタプリタを使っていましたが、ファイルであとに残すために、print出力をするコードを書いてみました。

print('a is {}'.format('a pen'))
print('a is {} {} {}'.format(1,2,3))

出力

a is a pen
a is 1 2 3

{}(braces)は一つだけでなく、2つ、3つ同時に使うことができて、中に何も入れていない状態だと、formatで指定する値をindexの順番どおり入力します。

bracesの中に、インデックスを指定することで表示する順番を変えることもできます。

print('a is {0} {1} {2}'.format(1,2,3))
print('a is {2} {1} {0}'.format(1,2,3))

出力

a is 1 2 3
a is 3 2 1

変数として代入することも可能

Python format メソッド

formatで代入しているindexの順番を指定してbracesに入れるだけでなく、わかりやすい名前をつけた変数を使うことも可能です。

print('My name is {0} {1}. 私の名前は{1} {0}です'.format('Master','U'))
print('My name is {name} {family}. 私の名前は{family} {name}です'.format(name='Master',family='U'))

出力

My name is Master U. 私の名前はU Masterです
My name is Master U. 私の名前はU Masterです

どちらの出力も同じ文章になります。
ここで気になるのは、formatで代入する変数に半角スペースを入れていないところです。
試しにスペースを入れてみましたが、問題なく出力されたので、メソッドの中で変数を指定するときは半角スペースを入れないのかもしれません。

変数を先に定義してからでも使える

Python format メソッド

変数nにMasterを代入し、変数fにUを代入したあと、formatでbracesに指定したインデックスを文章に代入しています。

n = 'Master'
f = 'U'
print('My name is {0} {1}. 私の名前は{1} {0}です。'.format(n, f))

次のように出力もできますが、コードが長いので、formatで出力するコードのほうがわかりやすい気がします。

n = 'Master'
f = 'U'
print('My name is', n, f,'私の名前は',f , n, 'です。'))

出力結果

My name is Master U. 私の名前はU Masterです。
My name is Master U 私の名前は U Master です。

出力結果は半角スペースが入ったりします。

Pycharmは無料でも使える

変数を指定するならformatを使わなくてもいいんじゃないかと思っちゃいましたが、何回かコードを入力しているうちに、formatを使ったほうがコードがスッキリするなと思ってきました。

また、Python3.6以上であれば、formatに加えて、f-stringという関数が使えて、コードがさらにスッキリできるみたいです。

n = 'Master'
f = 'U'
print(f'My name is {n} {f}. 私の名前は{f} {n}です。')

2日目くらいに学習したリテラルの中身をそのまま出力するrawdataの【r】と同じ使い方で、【f】を最初に入れることで、変数を直接代入できるので、後ろの【.format()】の部分が不要になります。

このように、Pythonはバージョンが上がるにつれて、便利なものがどんどん追加されていくみたいなので、ほんと日々勉強が必要ですね。

最後になったのですが、MacのPython環境を整えているときに、Pycharmは無料で使えるバージョンがあることを知りました。

てっきり月額料金がかかってくるんだと思っていたら、プロフェッショナルとフリーバージョンがあって、フリーのほうは無料で使えるようです。

Pycharmをインストールして使えるようにするには、ひと手間必要ですが、酒井さんの講座では、使える状態にする方法も丁寧に解説してくれています。

全体で28時間もある講座なので、じっくりPythonを学びたい人にはおすすめです。

Udemy講師 酒井さん プログラミング Python

ぜひ受講してみてください!

ではでは、Good Python!