設問
引数x, y, zを受け取り「x時のyはz」という文字列を返す関数を実装せよ.さらに,x=12, y=”気温”, z=22.4として,実行結果を確認せよ.
今回のポイントは1.format関数の使い方、2.string.Templateの使い方です。
順番に見ていきます。まずはformat関数です。
6行目の「'{0}時の{1}は{2}’.format(x, y, z)」が該当箇所になります。
format関数は文字列中に{}に対して、format()の引数に指定した値を渡すことで、動的に文字列の内容を変化させることができます。
ここでは、14~16行目で指定したx、y、zの値をそれぞれ{0}、{1}、{2}に設定しています。
{0}・・・x:12
{1}・・・y:”気温”
{2}・・・z:22.4
次にstring.Templateです。
10行目の「Template(‘$hour時の$tempは$val’)」がTemplate関数の使用箇所になります。
$hour、$temp、$valでが可変部分になります。
これに対して、「s.substitute(hour=x, temp=y, val=z)」でそれぞれにx、y、zの値を設定しています。
#coding: utf-8
from string import Template
#format関数1
def str_format(x, y, z):
return '{0}時の{1}は{2}'.format(x, y, z)
#format関数2
def str_format2(x, y, z):
s = Template('$hour時の$tempは$val')
return s.substitute(hour=x, temp=y, val=z)
#実行
x = 12
y = "気温"
z = 22.4
val = str_format(x, y, z)
print(val)
val2 = str_format2(x, y, z)
print(val2)
実行結果
12時の気温は22.4
12時の気温は22.4
開発環境
Windows10
Python 3.7.3
Visual Studio Code 1.33.1