Очистить всё
Часть раздела Основы путешествия по Ruby на Coddy — урок 84 из 88.
Задание
ЛегкоДоработайте свой трекер расходов, добавив функциональность "Очистить все".
Ваша программа должна:
- Инициализировать пустой массив с именем
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" используйте метод 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 (добавить два расхода, проверить общую сумму, очистить, снова проверить общую сумму), вывод должен быть следующим:
--- 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Все уроки раздела Основы
4Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логикаЛогические операторы. Часть 3Логические операторы. Часть 47Калькулятор разделения счета
Приветственное сообщениеПолучение пользовательского ввода13Продвинутая работа с массивами
Срезы массивов через диапазоныСрезы массивов через индексыОператоры массивовМетод include?2Переменные и типы данных
Числа и переменныеСтроковый тип данныхЛогический тип данныхТип данных SymbolПроверка типов данныхПравила именованияПовторение: создание переменных5Принятие решений
Оператор IfКонструкция If - ElseПовторение — Простой калькуляторВложенные конструкции If - ElseОператор Unless8Циклы
Цикл For с диапазонамиЦикл WhileОператор BreakОператор NextПовторение: ФакториалЦикл TimesЦикл UntilВложенные циклыПовторение: Динамический ввод3Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСокращенная арифметикаИтоги: простая математикаОператоры сравнения6Основы ввода-вывода
Вывод с помощью putsВывод с помощью print и pВывод с переменнымиВвод с помощью getsМетод chompПреобразование типовИтоги — Калькулятор возрастаИтоги — Истина или ложь9Методы
Определение методаПараметры методаВозвращаемые значенияПовторение: метод SigmaПовторение: метод ValidationЗначения параметров по умолчанию15Трекер ежедневных расходов
Обзор проектаВыход из программы