全データの削除
CoddyのRubyジャーニー「基礎」セクションの一部 — レッスン 84/88。
チャレンジ
簡単「Clear All(すべて消去)」機能を追加して、支出トラッカーをさらに発展させましょう。
プログラムの要件は以下の通りです:
expensesという名前の空の配列を初期化します。- メニューを表示し、ユーザーの入力を読み取る
loop doを作成します。 - ユーザーが
"1"を入力したとき、支出の名前と金額をプロンプトで求め、:nameと:amountをキーに持つハッシュを作成してexpenses配列に追加し、Expense added!と表示します。 - ユーザーが
"2"を入力したとき、すべての支出を表示するか、支出がない場合はメッセージを表示します。 - ユーザーが
"3"を入力したとき、すべての支出の合計と平均を計算して表示するか、支出がない場合はメッセージを表示します。 - ユーザーが
"4"を入力したとき、配列からすべての支出を消去し、確認メッセージを表示します。 - ユーザーが
"5"を入力したとき、Goodbye!と表示してループを終了します。
メニューは以前とまったく同じように表示する必要があります:
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: オプション "4" が選択されたときは、expenses 配列に対して clear メソッドを使用し、All expenses cleared! と表示してください。
例えば、入力が 1, Coffee, 5.0, 4, 2, そして 5(支出を追加、すべて消去、その後表示)の場合、出力は以下のようになります:
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Expense name: Amount: Expense added!
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: All expenses cleared!
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: No expenses recorded yet.
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Goodbye!入力が 1, Lunch, 12.0, 1, Dinner, 25.0, 3, 4, 3, そして 5(2つの支出を追加、合計を確認、消去、再度合計を確認)の場合、出力は以下のようになります:
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Expense name: Amount: Expense added!
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Expense name: Amount: Expense added!
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Total: $37.0
Average: $18.5
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: All expenses cleared!
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: No expenses to calculate.
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Goodbye!自分で試してみよう
expenses = []
loop do
puts "--- Expense Tracker ---"
puts "1. Add Expense"
puts "2. View Expenses"
puts "3. Total & Average"
puts "4. Clear All"
puts "5. Exit"
print "Choose an option: "
choice = gets.chomp
if choice == "1"
print "Expense name: "
name = gets.chomp
print "Amount: "
amount = gets.chomp.to_f
expense = { name: name, amount: amount }
expenses << expense
puts "Expense added!"
elsif choice == "2"
if expenses.empty?
puts "No expenses recorded."
else
expenses.each do |expense|
puts "#{expense[:name]}: $#{expense[:amount]}"
end
end
elsif choice == "3"
if expenses.empty?
puts "No expenses to calculate."
else
total = 0
expenses.each do |expense|
total += expense[:amount]
end
average = total / expenses.length
puts "Total: $#{total}"
puts "Average: $#{average}"
end
elsif choice == "5"
puts "Goodbye!"
break
end
puts ""
end