以下の条件を達成するプログラムを実装しなさい
銀行口座に10万円の預金残高があり、お金を引き出すプログラムを作成します。
・お金を引き出すwithdrawメソッドを作成する
・お金を引き出すと手数料110円かかり、「◯◯円引き落としました。残高は◯◯円です」と表示する(残高は手数料を引いた額を表示します)
・もし預金残高より多く引き落としたら「残高不足です」と表示する
・以下にヒントを用意するので参考にしてください
雛形
def withdraw(balance, amount)
fee = 110 # 手数料
# 引き落とし額と残高を表示する、もしくは残高より多く引き落としたら残高不足と表示
end
balance = 100000 # 残高
puts "いくら引き落としますか?(手数料110円かかります)"
money = gets.to_i
withdraw(balance, money)
自分の解答
def withdraw(balance, amount)
fee = 110 # 手数料
if balance >= amount
puts "#{amount}円引き落としました。残高は#{balance -(amount + fee)}円です"
else
puts "残高不足です"
end
end
balance = 100000 # 残高
puts "いくら引き落としますか?(手数料110円かかります)"
money = gets.to_i
withdraw(balance, money)
模範解答
def withdraw(balance, amount)
fee = 110
if balance >= (amount + fee)
balance -= (amount + fee)
puts "#{amount}円引き落としました。残高は#{balance}円です"
else
puts "残高不足です"
end
end
balance = 100000
puts "いくら引き落としますか?(手数料110円かかります)"
money = gets.to_i
withdraw(balance, money)
解説
balance >= (amount + fee)
これは、引き落としたい金額 + 手数料が残高100,000円以下という計算式です。
balance -= (amount + fee)
# balance = balance - (amount + fee)と同じ処理がされます。
これは、引き落としたい金額 + 手数料が残高100,000円ちょうどのときという式です。自分の解答の中では、この部分を考慮できていませんでした。
「 -= 」の部分があまり見慣れないなと感じたのですが、落ち着いて考えれば納得できました。
if文の中で式をまとめておけば、
「◯◯円引き落としました。残高は◯◯円です」
この部分はスマートなコードでまとめることができます。
模範解答のように読みやすいコードを書けるようになる必要があるなと痛感しました。
可読性を上げる方法はまだまだあるぞ、と。もっと勉強して、考えて、スキルを身に付けます。