前回Pythonでドラクエ風対戦ゲームを作ってみたという記事を書いたところ、早速アドバイスを頂き、分からないことだらけだったので皆様と共有したいと思います。まずはf文字列から!
f文字列とは
Python3.6から追加された、文字列の中に書式を指定して数値などの値を埋め込めるようにしたもの。f'{値:書式}'という具合に、文頭に「f」をつけてクウォートで文字列を囲み、その文字列の中に波括弧で変数名や式を入れられるようになった。
以前は
name = '太郎'
print('私の名前は' + name + 'です')
あるいはformat()メソッドを使って
name = '太郎'
print('私の名前は{}です'.format(name))
としていたところをf文字列を使うと
name = '太郎'
print(f'私の名前は{name}です')
こんな感じ!スマートに書けますね!
f文字列はデフォルトで文字列を返すので変数に数字をいれてもOK!
age = 20
print(f'私の年齢は{age}歳です')
#出力
私の年齢は20歳です
式やメソッドも使える
波括弧の中に式を入れると、その結果を出力してくれます。
f'1 + 1 + 2 + 3 + 5 + 8 = {1 + 1 + 2 + 3 + 5 + 8}'
#出力
'1 + 1 + 2 + 3 + 5 + 8 = 20'
また、メソッドも使うことができます。
name = 'taro'
print(f'{name}を大文字にすると{name.upper()}です')
#出力
taroを大文字にするとTAROです
書式を指定する
f文字列はf'{値:書式}で書式を指定することができます。
- 数字にカンマを入れる f'{値:,}'
number = 3628800
f'{number:,}'
#出力
'3,628,800'
- 数字に+符号をつける f'{値:+}'
x = 300
f'{x:+}'
#出力
'+300'
- 小数点の桁数を指定する f'{値:.(桁数)f}'
桁数の前のドットを忘れずに。
pi = 3.141592653589793238462643383279502884197169399375
print(f'{pi:.2f}')
print(f'{pi:.10f}')
#出力
3.14
3.1415926536
- 日付の表示 f'{値:%Y%m%d}'
import datetime
birthday = datetime.date(2020, 1, 3)
print(f'{birthday:%Y%m%d}')
print(f'{birthday:%Y年%m月%d日}')
print(f'{birthday:%Y/%m/%d}')
print(f'{birthday:%Y.%m.%d.}')
#出力
20200103
2020年01月03日
2020/01/03
2020.01.03.
- 空白を作る f'{値:< or > or ^ (数字)}'
右に空白
word = 'pyton'
print(f'[{word:<10}]')
print(f'[{word:<30}]')
#出力
[pyton ]
[pyton ]
左に空白
print(f'[{word:>15}]')
print(f'[{word:>20}]')
#出力
[ pyton]
[ pyton]
両端に空白
print(f'[{word:>20}]')
print(f'[{word:^25}]')
#出力
[ pyton ]
[ pyton ]
この他にもf文字列の書式には色々あるようです。表示したいものがあったら調べてみるといいですね。
以上、f文字列についてでした!