You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby编程求助:如何完成含数组、循环、哈希的销售统计程序?

嘿,这是个非常适合巩固Ruby基础的小项目!刚好能把你正在练习的数组、循环、哈希这些知识点完美整合起来,我给你一步步拆解思路,帮你把代码串起来:

第一步:先理清楚数据结构怎么设计

首先,我们需要存储每个销售人员的所有信息——姓名、卖出/未卖出的衬衫和鞋子数量。这里用**哈希(Hash)**来存单个销售的信息最合适,比如:

salesperson = {
  name: "张三",
  shirt_sold: 5,
  shirt_unsold: 2,
  shoe_sold: 3,
  shoe_unsold: 1
}

然后用**数组(Array)**来装所有销售人员的哈希,这样后续循环遍历统计就非常方便:

all_salespeople = []
第二步:实现"任意数量"的输入功能

我们可以用一个循环来持续接收用户输入,直到用户表示没有更多销售人员要添加了。比如:

loop do
  puts "请输入销售人员姓名(输入'结束'停止添加):"
  name = gets.chomp
  break if name == "结束"

  puts "请输入#{name}卖出的衬衫数量:"
  shirt_sold = gets.chomp.to_i

  puts "请输入#{name}未卖出的衬衫数量:"
  shirt_unsold = gets.chomp.to_i

  puts "请输入#{name}卖出的鞋子数量:"
  shoe_sold = gets.chomp.to_i

  puts "请输入#{name}未卖出的鞋子数量:"
  shoe_unsold = gets.chomp.to_i

  # 把当前销售的信息存入哈希,再添加到数组里
  all_salespeople << {
    name: name,
    shirt_sold: shirt_sold,
    shirt_unsold: shirt_unsold,
    shoe_sold: shoe_sold,
    shoe_unsold: shoe_unsold
  }
end

这里用loop配合break来控制输入的结束,非常灵活。

第三步:写一个计算盈利的逻辑

盈利的规则很明确:只有卖出的商品才产生利润,所以:

  • 衬衫盈利 = 卖出数量 × 2
  • 鞋子盈利 = 卖出数量 × 6
  • 总盈利 = 衬衫盈利 + 鞋子盈利

我们可以把这个计算逻辑封装成一个小方法,代码更清晰:

def calculate_profit(salesperson)
  shirt_profit = salesperson[:shirt_sold] * 2
  shoe_profit = salesperson[:shoe_sold] * 6
  shirt_profit + shoe_profit
end
第四步:遍历数组,输出每位销售的盈利

最后用**循环(each)**遍历存储所有销售信息的数组,调用上面的方法计算盈利并输出:

puts "\n--- 销售盈利统计结果 ---"
all_salespeople.each do |person|
  profit = calculate_profit(person)
  puts "#{person[:name]}的盈利金额:$#{profit}"
end
一些进阶小建议
  • 可以加输入验证:比如防止用户输入非数字的数量,比如用until循环判断输入是否为整数,确保数据合法
  • 如果想更面向对象一点,可以定义一个Salesperson类,把属性和计算盈利的方法封装进去,这也是Ruby中很常用的写法

把这些部分拼起来,就是一个完整的程序啦!你可以先跑通基础版本,再慢慢优化~

内容的提问来源于stack exchange,提问作者N.A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:40:46