入力を受け取る
使うたびにコードを書き換えるのでは、道具にならない
ここまでのおこづかい帳は、品名も金額もコードの中に書いてありました。記録を 1 件増やすたびにソースを開いて書き換えるのでは、道具として使えません。人がその場で打ち込めるようにします。
そのための命令が input です。呼ぶとプログラムはそこで止まり、人が何か打って Enter を押すと、その内容が戻り値として返ってきます。
Python
text = input("品名と金額を入力してください ")
print(text)かっこの中の文字列は、入力を待つ前に画面へ出る案内文です。省いても構いません。止まったまま何も起きないように見えたら、入力待ちかどうかを疑ってください。
数字を打っても、数値にはならない
いちばん大事な性質がこれです。input の戻り値は どんなときも str です。120 と打ち込んでも int にはなりません。
Python
price = int(input("金額 "))
print(price + 100)int を通さずに + 100 とすると TypeError です。input と int はほぼ必ずセットで使う、と覚えておいて構いません。
演習では、input が返してきたはずの文字列を 引数で受け取る 形にしています。採点は人のいない場所で自動的に走るので、入力待ちで止まる関数は扱えないためです。入力を取る係と中身を扱う係を分けるのは実務でも定石なので、遠回りではありません。手元のファイルでは input を書いて、実際に打ち込んで動かして構いません。
1 本の文字列を切り分ける
打たれた文字列は、品名と金額がくっついた 1 本の str です。これを分けるのが split です。区切り文字を渡すと、その位置で切ってくれます。
Python
print("2026-08-24".split("-"))['2026', '08', '24'] と出ます。切り分けた結果は、左に名前を並べて一度に受け取れます。
Python
year, month, day = "2026-08-24".split("-")year に "2026"、month に "08"、day に "24" が入ります。1 つの変数で受けると切り分けたもの全部がまとめて入ってしまうので、個数のぶんだけ名前を並べてください。
切り出したものはどれも文字列のままです。数として使うなら int を通します。半角スペースで切るなら、区切り文字も半角です。全角スペースで打たれた文字列は切れません。
やってみよう
関数 parse_input を実装してください。引数は input が返してきた想定の文字列 text で、"りんご 120" のように品名と金額が半角スペース 1 つで区切られています。
これを分解して、品名の文字列と、数値に変換した金額を [品名, 金額] の順に並べて返します。parse_input("りんご 120") なら ["りんご", 120] です。角かっこの中にカンマ区切りで並べると、複数の値をまとめて 1 つの戻り値にできます。
金額は必ず数値にしてください。文字列のままだと落ちます。"パン 080" のように先頭に 0 が付いていても、数値にすれば 80 になります。
要件
- 関数名は parse_input で、引数は text の1つ
- 半角スペースで品名と金額に分ける
- 金額は int で数値に変換する
- [品名, 金額] の順に並べて return する