Я флиртовал с обучением веб-разработчиков в прошлом, и у меня не было времени, поскольку я полный рабочий день Business Student.Моя программа не сохраняет/отображает все счета, которые я добавил
Я начал копать назад сегодня и решил отдохнуть от обучения и практики, что я узнал сегодня, написав простую программу, которая позволяет пользователю вводить свои счета и в конечном итоге рассчитать, сколько располагаемого дохода они после оплаты их счетов каждый месяц.
Моя проблема заключается в том, что программа проходит отлично, цикл продолжается/выходит, когда это необходимо, но либо программа не хранит пользователя в хеше, как я этого хочу, либо не отображает все счета, внесенные как следует. Вот моя программа:
# This program allows you to assign monthly payments
# to their respective bills and will automatically
# calculate how much disposable income you have
# after your bills are paid
# Prompts user to see if they have any bills to enter
puts "Do you have any bills you would like to enter, Yes or No?"
new_bill = gets.chomp.downcase
until new_bill == 'no'
# Creates a hash to store a key/value pair
# of the bill name and the respection payment amount
bills = {}
puts "Enter the bill name: "
bill_name = gets.chomp
puts "How much is this bill?"
pay_amt = gets.chomp
bills[bill_name] = pay_amt
puts "Would you like to add another bill, Yes or No?"
new_bill = gets.chomp.downcase
end
bills.each do |bill_name, pay_amt|
puts "Your #{bill_name} bill is $#{pay_amt}."
end
Мои вопросы: Настроен ли мой хэш правильно хранить пары ключ/значение от входа пользователей? Если нет, как я могу его исправить?
Я получаю только последний счет, введенный пользователем. Я пробовал несколько счетов за раз, но получаю только последнюю запись.
Как я уже сказал, я ноб, но я очень амбициозен, чтобы учиться. Я упомянул рубиновые документы о хэшах, чтобы узнать, есть ли ошибка в моем коде, но я смог найти решение (все еще находя свой путь вокруг рубиновых документов).
Любая помощь приветствуется! Кроме того, если у вас есть какие-либо рекомендации относительно способов повышения эффективности моего кода, не могли бы вы указать мне в том направлении, где я могу получить соответствующую информацию?
спасибо.
Редактировать:
Главный вопрос был дан ответ. Это прослеживание вопрос к той же программе - я получаю сообщение об ошибке budget_calculator.rb: 35: в -': Hash can't be coerced into Float (TypeError) from budget_calculator.rb:35:in
'
Из следующего кода (имейте в виду, программы выше) -
# Displays the users bills
bills_hash.each {|key,value| puts "Your #{key} bill is $#{value}."}
# Get users net income
puts "What is your net income?"
net_income = gets.chomp.to_f
#Calculates the disposable income of the user
disposable_income = net_income - bills_hash.each {|value| value}
puts disposable_income
Я понимаю, что ошибка появляется из этой строки кода: disposable_income = net_income - bills_hash.each {| value | значение}
Я просто не понимаю, почему это неприемлемо. Я пытаюсь вычесть все значения хэша (pay_amt) из чистого дохода для получения располагаемого дохода.
Если кто-то имеет представление об ошибке, эта часть еще не ответила. –
Я нашел ответ на вторую часть вопроса, используя Enumerable # inject для суммирования значений pay_amt в хэше, а затем вычитал общее из чистого дохода. Ниже приведено следующее решение: tot_bills = bills_hash.values.inject {| a, b | a + b} –
Добро пожаловать в переполнение стека. Не ожидайте ответа на несколько вопросов на одной странице, если они не очень близки; Множество вопросов трудно ответить четко, и им трудно выполнять другие при поиске похожих решений. Помните, что SO - справочная книга или кулинарная книга программирования для решения конкретных проблем. Также, пожалуйста, будьте очень кратки, когда спрашиваете; Программирование является кратким, и нам нравится краткость. «Спасибо» и «Редактировать» тоже нежелательны; Мы предполагаем, что вы благодарны, а «Изменить» или «Обновить» только отвлекает. Поместите текст там, где он должен был быть изначально. –