Я создаю программу Ruby, которая спрашивает, сколько компьютеров вы хотите, и имеет массивы для компьютеров, мониторов и бесплатный элемент. Я хочу добавить стоимость к каждому из массивов. Если бы я мог добавить значение к каждому элементу массива, это было бы здорово, но для меня, как новичка, это может быть слишком сложно для понимания.
что у меня есть на данный момент:
def computer_order()
puts "how many computers with monitors would you like today?"
number = gets.chomp
number = number.to_i
number
end
def monitor_and_computer()
computer_type = ["Dell Inspiron", "HP Pro", "Acer Vero", "Lenovo Ideacentre", "Dell Optiplex", "HP Envy"]
monitor_type = ["Dell 27' Curved", "Viewsonic 22' Flat", "LG 24' Flat", "Samsung 27' Curved", "Spectre 27' Flat", "MSI 31.5' Curved"]
free_item = ["250G Thumb drive", " Shop T-Shirt", "25$ Steam Gift Card"]
cost = 600
number_of_computers = computer_order()
number_of_computers = number_of_computers.to_i
total = (number_of_computers * cost)
total = total.to_s
number_of_computers.times do
puts "One computer is " + computer_type.sample + ", " + monitor_type.sample + ", " + free_item.sample
end
puts "Your total is: $" + total
end
monitor_and_computer()
@kevinluo201 Да, я хочу вывести комбинацию компьютера, монитора и бесплатного предмета. Я не знаю фактической стоимости предметов, нет. Однако истинная реальная стоимость не важна. Это могут быть выдуманные цифры.
Вы можете использовать Hash, например. computer_type = {"Dell Inspiron" => 300.0, "HP Pro" => 600.0}; или вы можете создать формальный объект, например class Computer; attr_reader :name, :cost; def initialize(name: ,cost:); @name = name; @cost = cost;end;end;, а затем построить объекты computer_type =[Computer.new(name: "Dell Inspiron", cost: 300.0), Computer.new(name: "HP Pro", cost: 600.0).
@engineersmnky Спасибо, я никогда раньше не использовал хеши. Если бы я использовал метод Hash, как бы я объединил значения из строк Computer_type и Monitor_type? Во что превратятся мои затраты и общие переменные?
@DRey, это действительно зависит от вас, вот документация для Hash, возможно, обратите особое внимание на такие методы, как each, keys и values

Я думаю, ты можешь попробовать это в первую очередь. Используйте Hash, чтобы сначала сгруппировать информацию о цене и названии продуктов, а затем извлечь нужные данные.
def computer_order
puts "how many computers with monitors would you like today?"
number = gets.chomp
number = number.to_i
number
end
def monitor_and_computer
computer_types = [
{
name: "Dell Inspiron",
price: 100
},
{
name: "HP Pro",
price: 200
},
{
name: "Acer Vero",
price: 300
},
{
name: "Lenovo Ideacentre",
price: 400
},
{
name: "Dell Optiplex",
price: 500
},
{
name: "HP Envy",
price: 600
}
]
monitor_types = [
{
name: "Dell 27' Curved",
price: 200
},
{
name: "Viewsonic 22' Flat",
price: 300
},
{
name: "LG 24' Flat",
price: 400
},
{
name: "Samsung 27' Curved",
price: 500
},
{
name: "Spectre 27' Flat",
price: 600
},
{
name: "MSI 31.5' Curved",
price: 700
}
]
free_items = ["250G Thumb drive", "Declan's Shop T-Shirt", "25$ Steam Gift Card"]
total = 0
number_of_computers = computer_order
number_of_computers.times do
computer = computer_types.sample
monitor = monitor_types.sample
free_item = free_items.sample
total += computer[:price] + monitor[:price]
puts "One computer is #{computer[:name]}, #{monitor[:name]}, #{free_item}"
end
puts "Your total is: $#{total}"
end
monitor_and_computer
После реализации вы можете позволить пользователю вводить желаемое название модели вместо количества компьютеров. Вы можете использовать find, чтобы найти нужный элемент в массивах продуктов, например:
computer_types.find { |c| c[:name] == 'HP Pro' }
# => {:name=>"HP Pro", :price=>200}
В качестве альтернативы вы можете определить собственный класс, например. Product = Data.define(:name, :price), чтобы вы могли использовать реальные вызовы методов, таких как computer.name, вместо работы с хэш-ключами.
@kevinluo201 Спасибо, думаю, теперь я понимаю немного лучше. А всем остальным спасибо за помощь, это очень ценно!
Пожалуйста. После того, как вы поближе познакомитесь с Ruby и ООП (объектно-ориентированным программированием), вы поймете предложение @Stefan. Эту книгу вы можете прочитать на сайте poodr.com . кстати, ты можешь установить этот ответ как лучший ответ, это может дать мне немного больше очков, лол
После того, как пользователь вводит число, например. 3, ваш код случайным образом составит 3 комбинации из компьютера, монитора и бесплатного предмета. Это то, что ты хочешь сделать? Знаете ли вы, сколько стоит каждый предмет?