Usuwanie wszystkich wydatków
Część sekcji Podstawy ścieżki Ruby w Coddy. Lekcja 84 z 88.
Wyzwanie
ŁatwyRozbuduj swój rejestr wydatków, dodając funkcjonalność "Clear All".
Twój program powinien:
- Zainicjalizować pustą tablicę o nazwie
expenses - Utworzyć
loop do, który wyświetla menu i odczytuje dane wejściowe użytkownika - Gdy użytkownik wpisze
"1", poprosić o nazwę i kwotę wydatku, utworzyć hash z kluczami:namei:amount, dodać go do tablicyexpensesi wyświetlićExpense added! - Gdy użytkownik wpisze
"2", wyświetlić wszystkie wydatki lub komunikat, jeśli nie ma żadnych - Gdy użytkownik wpisze
"3", obliczyć i wyświetlić sumę oraz średnią wszystkich wydatków lub komunikat, jeśli nie ma żadnych - Gdy użytkownik wpisze
"4", usunąć wszystkie wydatki z tablicy i wyświetlić komunikat potwierdzający - Gdy użytkownik wpisze
"5", wyświetlićGoodbye!i zakończyć pętlę
Menu powinno wyświetlać się dokładnie tak jak wcześniej:
--- Expense Tracker ---
1. Add Expense
2. View Expenses
3. Total & Average
4. Clear All
5. Exit
Choose an option: Po wybraniu opcji "4" użyj metody clear na tablicy expenses i wyświetl: All expenses cleared!
Na przykład, jeśli dane wejściowe to 1, Coffee, 5.0, 4, 2, a następnie 5 (dodaj wydatek, usuń wszystkie, a następnie wyświetl), wynikiem powinno być:
--- 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!Jeśli dane wejściowe to 1, Lunch, 12.0, 1, Dinner, 25.0, 3, 4, 3, a następnie 5 (dodaj dwa wydatki, sprawdź sumę, usuń wszystkie, ponownie sprawdź sumę), wynikiem powinno być:
--- 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!Spróbuj swoich sił
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 ""
endWszystkie lekcje w sekcji Podstawy
4Operatory — część 2
Operatory logiczne — część 1Operatory logiczne — część 2Powtórka — podstawy logikiOperatory logiczne — część 3Operatory logiczne — część 47Kalkulator podziału rachunku
Wiadomość powitalnaPobieranie danych od użytkownika2Zmienne i typy danych
Liczby i zmienneTyp danych StringTyp danych BooleanTyp danych SymbolSprawdzanie typów danychKonwencje nazewnictwaPodsumowanie — tworzenie zmiennych5Podejmowanie decyzji
Instrukcja ifIf - elsePowtórka — prosty kalkulatorZagnieżdżone if - elseInstrukcja unless8Pętle
Pętla for z zakresamiPętla whilebreaknextPowtórka – silniaPętla timesPętla untilPętle zagnieżdżonePowtórka – dynamiczne wejście3Operatory — część 1
Operatory arytmetyczneOperator moduloSkrócone operatory arytmetycznePodsumowanie — prosta matematykaOperatory porównania6Podstawowe wejście i wyjście
Wyświetlanie za pomocą putsWyświetlanie za pomocą print i pWyświetlanie zmiennychWczytywanie za pomocą getsMetoda chompKonwersja typówPodsumowanie – kalkulator wiekuPodsumowanie – prawda czy fałsz9Metody
Definiowanie metodyParametry metodyWartości zwracanePowtórka — metoda SigmaPowtórka — metoda walidacjiDomyślne wartości parametrów15Codzienny rejestr wydatków
Przegląd projektuZakończenie programuPoćwicz samodzielnie: Kompilator Ruby online