如何为Ruby中的每个数组及数组元素赋予货币价值?
给每个电脑/显示器单独设置成本的Ruby实现
你可以用**哈希(Hash)**来给每个产品绑定名称和成本,这对初学者来说很好理解,比单纯的数组更适合存储带属性的内容。下面是修改后的代码,帮你实现每个电脑、显示器单独赋值成本,同时计算真实总价:
def computer_order puts "今天需要多少台带显示器的电脑?" gets.chomp.to_i end def monitor_and_computer # 用哈希数组存储每个电脑的名称和成本 computer_types = [ { name: "Dell Inspiron", cost: 550 }, { name: "HP Pro", cost: 620 }, { name: "Acer Vero", cost: 480 }, { name: "Lenovo Ideacentre", cost: 580 }, { name: "Dell Optiplex", cost: 650 }, { name: "HP Envy", cost: 700 } ] # 同理存储显示器的名称和成本 monitor_types = [ { name: "Dell 27' Curved", cost: 180 }, { name: "Viewsonic 22' Flat", cost: 120 }, { name: "LG 24' Flat", cost: 150 }, { name: "Samsung 27' Curved", cost: 200 }, { name: "Spectre 27' Flat", cost: 220 }, { name: "MSI 31.5' Curved", cost: 250 } ] free_items = ["250G U盘", "品牌T恤", "25美元Steam礼品卡"] number_of_computers = computer_order total_cost = 0 number_of_computers.times do # 随机选一台电脑和显示器 selected_computer = computer_types.sample selected_monitor = monitor_types.sample selected_free_item = free_items.sample # 计算当前这套的价格 set_cost = selected_computer[:cost] + selected_monitor[:cost] total_cost += set_cost # 输出当前套餐详情 puts "套餐:#{selected_computer[:name]} + #{selected_monitor[:name]},赠品:#{selected_free_item},单价:$#{set_cost}" end puts "总费用:$#{total_cost}" end monitor_and_computer
关键改动说明
- 把原来的字符串数组改成哈希数组,每个哈希包含
name(产品名称)和cost(成本)两个键,实现每个元素单独赋值成本。 - 总价不再是固定单价乘数量,而是每次选完电脑和显示器后,把对应成本累加到总费用里,计算更准确。
- 输出时增加每套的具体价格,让用户能清晰看到每台电脑+显示器的花费。
内容的提问来源于stack exchange,提问作者Hamz
相关产品推荐
相关产品推荐

