処理を関数に分けよ
中段 / 目安 25分
カメ師範が事務局の隅から声をかけてきました。「松田の依頼が増えてきたな。付与計算とランク判定、道具にしておけ」。同じ計算を毎回書き下していては、直すときに全部を直すことになります。
道具とは関数のことです。ここで作った2つは、問7でもそのまま持ち出します。
完成条件
新規入会の窓口で使う処理を作ります。入会時の会計金額から付与ポイントを出し、そのポイントで初期ランクを決める、という流れです。
次の3つを定義してください。
calc_points(amount)は会計金額を受け取り、100円につき1ポイントを切り捨てで返しますget_rank(points)はポイントを受け取り、1000以上ならゴールド、500以上ならシルバー、それ未満ならブロンズを返しますdescribe_member(amount)は上の2つを両方呼び出して、付与 1200pt / ゴールドの形の文字列を返します
採点は describe_member を通して行います。中で calc_points と get_rank を呼ばずに、1つの関数へ計算を書き込んでも数字は合ってしまいますが、それでは道具を作ったことになりません。師範に見られていると思って分けてください。
進め方
白紙から書いてください。手が止まったらヒントを開けます。ヒントは3段階で、①方針、②使う構文、③部分解の順に出ます。1つも開けずに通せたら、その問題は自分のものです。
開かずに10分粘って進まないなら、①だけ開けてください。粘る時間そのものには価値がありません。価値があるのは、自分で書いた行が動いた瞬間です。
表示の文言を関数の中で print してはいけません。関数は値を返すだけにして、見せ方は呼んだ側が決めます。この分け方が、あとで台帳アプリを組むときに効いてきます。
要件
- calc_points(amount) は 100円につき1ポイントを切り捨てで返すこと
- get_rank(points) は 1000以上でゴールド、500以上でシルバー、それ未満でブロンズを返すこと
- describe_member(amount) は calc_points と get_rank を両方呼び出すこと
- describe_member が返す文字列の形は「付与 1200pt / ゴールド」であること
- 関数の中で print せず、値を return で返すこと
入出力例
describe_member(120000) → "付与 1200pt / ゴールド"
describe_member(100000) → "付与 1000pt / ゴールド"
describe_member(50000) → "付与 500pt / シルバー"
describe_member(49999) → "付与 499pt / ブロンズ"
describe_member(980) → "付与 9pt / ブロンズ"ヒント
前のヒントを開くと次が開きます。開かずに解けると未開封クリアです
ヒント 2ヒント 1 を開くと読めます
ヒント 3ヒント 2 を開くと読めます
編集 ゆめさく編集部