文字列の連結
品名も金額も、記録するたびに変わる
前回の見出しは、いつ呼んでも同じ文字列でした。ですが実際のおこづかい帳では、品名も金額も記録するたびに変わります。バラバラの文字を 1 本につなげる仕組みが要ります。
Python では、文字列と文字列を + でつなげます。この操作を連結と呼びます。
Python
print("食費" + "の合計")食費の合計 と出ます。+ は数値を足すときにも使う記号ですが、左右が文字列のときは「くっつける」働きに変わります。同じ記号が、左右の種類で顔を変えます。
すき間は自分で足す
+ は指示どおり忠実につなぐだけで、気を利かせて空白を入れてはくれません。
Python
print("東京" + "晴れ")
print("東京" + " " + "晴れ")上は 東京晴れ、下は 東京 晴れ です。真ん中の " " は、ダブルクオートの中に半角スペースが 1 つだけ入った文字列です。見た目には何も無いようでも、れっきとした文字列の 1 つです。全角スペースは別の文字なので、半角で打ってください。
つなぐ数に上限はありません。"a" + "b" + "c" は左から順に処理されて abc になります。
決め打ちをやめて、外から受け取る
"食費" のようにコードへ直接書いてしまうと、その値しか扱えません。外から渡された値を使いたいときは 引数 を使います。関数名のうしろのかっこの中に名前を書いておくと、呼び出すときに渡した値がその名前で使えます。
Python
def to_memo(text):
return text + " のメモ"
print(to_memo("交通費"))text が引数です。to_memo("交通費") と呼ぶと text の場所に "交通費" が入り、交通費 のメモ が返ります。引数の名前は自分で決められるので、中身が分かる英単語を付けます。
引数を使うときはクオートで囲みません。return "text" + " のメモ" と書くと、中身ではなく text という 4 文字がそのまま返ってしまいます。
やってみよう
関数 price_label を実装してください。引数は品名 name と金額の文字列 price_text の 2 つです。この 2 つを半角スペース 1 つでつなぎ、末尾に 円 を足した文字列を返します。
price_label("りんご", "120") なら りんご 120円、price_label("牛乳", "198") なら 牛乳 198円 です。金額が "0" のときも特別扱いはいらず ノート 0円 になります。テストは 1 文字違うだけで落ちるので、末尾の 円 まで見直してください。
金額を数値ではなく文字列で受け取るのは、"りんご" + 120 のように文字列と数値を混ぜると TypeError で止まるからです。今回は最初から文字列で渡ってくる、という前提にしています。
要件
- 関数名は price_label で、引数は name と price_text の2つ
- name と price_text の間には半角スペースを1つだけ入れる
- 末尾に「円」を付けた文字列を return する
- 引数はクオートで囲まずそのまま使う
入出力例
price_label("りんご", "120") → "りんご 120円"
price_label("牛乳", "198") → "牛乳 198円"
price_label("ノート", "0") → "ノート 0円"
price_label("チョコレートアイス", "298") → "チョコレートアイス 298円"
price_label("", "50") → " 50円"