Python入門トップページ


目次

  1. プログラミング言語
  2. Anaconda - Jupyter Notebook / JupyterLab の環境設定
  3. Python の基礎
  4. リスト,タプル,辞書,集合
  5. 再び Jupyter Notebook の操作
  6. Python の制御構文
  7. 関数
  8. 便利な関数など
  9. リストの内包表記
  10. 多次元リスト
  11. クラス
  12. 演習問題
  13. 雑多な情報

Python の基礎

雑多な情報

f 文字列で書式を設定する

ここで簡潔に説明したとおり, 変数の値を用いて文字列を生成するには Python 3.6 で追加された f 文字列が便利です.f 文字列を使うと書式設定を柔軟に行えるようになります.f 文字列を生成するには f または F をクォート(またはダブルクォート)の前に配置します.さらに { } で囲った中に変数や式を入力すると,その値が文字列の中に差し込まれます.


item = "Cup"
price = 100
print(f"この{item}の値段は{price}円です")
このCupの値段は100円です

目次に戻る

データ型の指定

f 文字列では変数や式の直後に : とオプションを入れると,幅などの書式指定が可能になります.次のように入力すると,文字列 (s) を 15文字,10進整数 (d) を 8 文字の幅で書式設定できます.


item = "Cup"
price = 100
print(f"この{item:15s}の値段は{price:8d}円です")
item = "Win Grass"
price = 1280
print(f"この{item:15s}の値段は{price:8d}円です")
このCup            の値段は     100円です
このWin Grass      の値段は    1280円です

文字列と10進整数のデータ型はそれぞれ,sd ですが,他にも下の表のようなデータ型が利用できます.

書式指定意味
s文字列
d10進整数
b2進整数
x, X16進整数
f浮動小数点数
e, E指数形式の浮動小数点数
g, G10進または指数形式の浮動小数点数

10進整数だけでなく,2進整数や16進整数で表示すると次のようになります.なお,16進整数は小文字で表示させることも大文字で表示させることも可能です.


result = 159
print(f"結果は{result:d}です")
print(f"結果は{result:b}です")
print(f"結果は{result:x}です")
print(f"結果は{result:X}です")
結果は159です
結果は10011111です
結果は9fです
結果は9Fです

浮動小数点数の表示例は次の通りです.


pi = 3.141592653589793
print(f"円周率は{pi}です")
print(f"円周率は{pi:f}です")
print(f"円周率は{pi:e}です")
print(f"円周率は{pi:E}です")
円周率は3.141592653589793です
円周率は3.141593です
円周率は3.141593e+00です
円周率は3.141593E+00です

整数型に対して f を指定すると,浮動小数点形式で表示できます.


result = 159
print(f"結果は{result:f}です")
結果は159.000000です

一方で,浮動小数点型に対して d を指定することはできません.


pi = 3.141592653589793
print(f"円周率はおよそ{pi:d}です")
--------------------------------------------------
ValueError       Traceback (most recent call last)

このような場合は整数型に型変換を行ってから書式を指定すべきです.


pi = 3.141592653589793
print(f"円周率はおよそ{int(pi):d}です")
円周率はおそよ3です

書式指定に gG を使うと,指数形式を使うかどうかが自動的に判断されます.なお,123 などのように,一部の結果は浮動小数点形式ではなく整数形式で表示されていることにも注意してください.


x = 1.23
for y in range(-6, 7):
    result = x * 10 ** y
    print(f"結果は{result:g}です")
結果は1.23e-06です
結果は1.23e-05です
結果は0.000123です
結果は0.00123です
結果は0.0123です
結果は0.123です
結果は1.23です
結果は12.3です
結果は123です
結果は1230です
結果は12300です
結果は123000です
結果は1.23e+06です

書式指定で G を使うと,大文字で表示されます.


x = 1.23
for y in range(-6, 7):
    result = x * 10 ** y
    print(f"結果は{result:G}です")
結果は1.23E-06です
結果は1.23E-05です
結果は0.000123です
結果は0.00123です
結果は0.0123です
結果は0.123です
結果は1.23です
結果は12.3です
結果は123です
結果は1230です
結果は12300です
結果は123000です
結果は1.23E+06です

目次に戻る

幅と配置,パディングの指定

ここですでに説明したとおり,f 文字列では変数や式の直後に : とオプションを入れると,幅などの書式指定が可能になります.次のように入力すると,文字列 (s) を 15文字,10進整数 (d) を 8 文字の幅で書式設定できます.

(再掲)
item = "Cup"
price = 100
print(f"この{item:15s}の値段は{price:8d}円です")
item = "Win Grass"
price = 1280
print(f"この{item:15s}の値段は{price:8d}円です")
このCup            の値段は     100円です
このWin Grass      の値段は    1280円です

残念ながら,全角文字が含まれる場合は配置が崩れてしまいます.


item = "カップ"
price = 100
print(f"この{item:15s}の値段は{price:8d}円です")
item = "ワイングラス"
price = 1280
print(f"この{item:15s}の値段は{price:8d}円です")
このカップ            の値段は     100円です
このワイングラス         の値段は    1280円です

整数型で先頭をゼロで埋める(パディングする)ためには :08d と入力します.

数値のゼロ埋め(パディング)
item = "Cup"
price = 100
print(f"この{item:15s}の値段は{price:08d}円です")
item = "Win Grass"
price = 1280
print(f"この{item:15s}の値段は{price:08d}円です")
このCup            の値段は00000100円です
このWin Grass      の値段は00001280円です

上の結果のとおり,文字列形式では左揃え,数値の形式は右揃えになるのが標準です.この配置を変更することができます.左揃えにするには < を指定します.

左揃え
item = "Cup"
price = 100
print(f"この{item:<15s}の値段は{price:<8d}円です")
item = "Win Grass"
price = 1280
print(f"この{item:<15s}の値段は{price:<8d}円です")
このCup            の値段は100     円です
このWin Grass      の値段は1280    円です

右揃えにするには > を指定します.

右揃え
item = "Cup"
price = 100
print(f"この{item:>15s}の値段は{price:>8d}円です")
item = "Win Grass"
price = 1280
print(f"この{item:>15s}の値段は{price:>8d}円です")
この            Cupの値段は     100円です
この      Win Grassの値段は    1280円です

中央揃えは ^ です.

中央揃え
item = "Cup"
price = 100
print(f"この{item:^15s}の値段は{price:^8d}円です")
item = "Win Grass"
price = 1280
print(f"この{item:^15s}の値段は{price:^8d}円です")
この      Cup      の値段は  100   円です
この   Win Grass   の値段は  1280  円です

また,: と配置指定の間に入力した文字でパディングが可能です.例えば商品名の前後はピリオドで,価格の前はアンダースコアでパディングします.

パディング
item = "Cup"
price = 100
print(f"この{item:.^15s}の値段は{price:_>8d}円です")
item = "Win Grass"
price = 1280
print(f"この{item:.^15s}の値段は{price:_>8d}円です")
この......Cup......の値段は_____100円です
この...Win Grass...の値段は____1280円です

目次に戻る

精度の指定

浮動小数点数の表示精度も指定することができます.まず,精度を指定せずに円周率を表示すると次のようになります.


pi = 3.141592653589793
print(f"円周率は{pi}です")
円周率は3.141592653589793です

次のように指定すると全体で15桁を使って表示されます.なお四捨五入されていることにも注意してください.


print(f"円周率は{pi:15f}です")
円周率は       3.141593です

次のように指定すると,全体で10桁確保し,そのうち小数点以下の表示桁数を3桁にできます.


print(f"円周率は{pi:10.3f}です")
円周率は     3.142です

小数点以下の表示桁数のみを指定することもできます.


print(f"円周率は{pi:.2f}です")
円周率は3.14です

負数の場合はもちろんマイナスの記号が付与されます.その結果,正数の結果とはズレが生じる可能性があります.(負の円周率というおかしな部分は無視してください.)


print(f"円周率は{-pi:.2f}です")
円周率は-3.14です

+ を指定すると,負数にマイナス記号,正数にはプラスの記号が付与されます.


print(f"円周率は{pi:+.2f}です")
円周率は+3.14です

print(f"円周率は{-pi:+.2f}です")
円周率は-3.14です

スペース を指定すると,負数にはマイナス記号,正数には空白が付与されます.


print(f"円周率は{pi: .2f}です")
円周率は 3.14です

print(f"円周率は{-pi: .2f}です")
円周率は-3.14です

指数形式の場合もほぼ同様です.


print(f"円周率は{pi:.3e}です")
円周率は3.142e+00です

目次に戻る

変数名の表示

Python 3.8 から変数のあとに = を入れることで,変数の値だけでなく,変数の名前も表示できるようになりました.この機能は開発途中のデバック時などに活用できそうです.


pi = 3.141592653589793
print(f"円周率は{pi=}です")
円周率はpi=3.141592653589793です

変数名を表示しつつ,表示形式を指定することも可能です.


print(f"円周率は{pi=:8.3f}です")
円周率はpi=   3.142です

目次に戻る