Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何从for循环计算用户输入的数据_Ruby - Fatal编程技术网

Ruby 如何从for循环计算用户输入的数据

Ruby 如何从for循环计算用户输入的数据,ruby,Ruby,此代码将问题重复5次。如何检索用户输入的数据?我试图计算所有10个回答的总和,以及每对回答的总和最高的指数 我尝试了一个尽可能接近您的解决方案,同时仍能产生预期的结果: numbers = [1, 2, 3, 4, 5] for num in numbers puts "insert q " qanswer1 = gets.chomp.to_i puts "insert 2nd q" qanswer2 = gets.chomp.to_i end 要获取所有对的总和,请执

此代码将问题重复5次。如何检索用户输入的数据?我试图计算所有10个回答的总和,以及每对回答的总和最高的指数

我尝试了一个尽可能接近您的解决方案,同时仍能产生预期的结果:

numbers = [1, 2, 3, 4, 5]

for num in numbers

  puts "insert q "
  qanswer1 = gets.chomp.to_i

  puts "insert 2nd q"
  qanswer2 = gets.chomp.to_i

end
要获取所有对的总和,请执行以下操作:

max_value = pairs.max_by(&:sum)
要获取具有最高值的对的索引,请执行以下操作:

sum_of_all_responses = pairs.flatten.sum

全部10份答复的总和

最大对和索引


看,还有

如果不需要存储所有数据,您可以随时进行计算

首先将输入请求移动到一个方法,该方法返回数组中的一对值:

nbr_pairs.times.max_by { |i| arr[i].sum }
  #=> 1 (8+6 = 14)
然后设置变量

def ask
  puts "insert q "
  qanswer1 = gets.to_i
  puts "insert 2nd q"
  qanswer2 = gets.to_i
  [qanswer1, qanswer2]
end
最后,在进行数学运算时循环:

big_sum = 0
best_input = 0
best_input_q_number = nil

您的意思是希望“计算每对响应的总和,即总和最大的
num
索引”?“和更多”需要精心设计或制作。请编辑以提供您希望获得的所有信息的精确描述。您想要10个响应的数组还是5个和的数组,或者两者都不想要,只是最大和的索引?如果
get
返回
“25\n”
“25\n”。to#i=>25
,就像
我的狗身上有跳蚤一样。to#i=>29
,那么
get.chomp.to#i
可以简化为
get.to
,这就是你通常看到它的写法。
def ask(str)
  print "#{str}: "
  gets.to_i
end

arr = nbr_pairs.times.map { [ask("insert q"), ask("insert 2nd q")] }
  #=> [[7, 3], [8, 6], [2, 9], [4, 6], [8, 3]]
arr.flatten.sum
  #=> 56
nbr_pairs.times.max_by { |i| arr[i].sum }
  #=> 1 (8+6 = 14)
def ask
  puts "insert q "
  qanswer1 = gets.to_i
  puts "insert 2nd q"
  qanswer2 = gets.to_i
  [qanswer1, qanswer2]
end
big_sum = 0
best_input = 0
best_input_q_number = nil
numbers = [1,2,3,4,5]

for n in numbers
# (1..5).each do |n| # this is more Ruby-ish
  p qanswers = ask # p for debug
  qanswers_sum = qanswers.sum
  big_sum += qanswers_sum
  if qanswers_sum > best_input
    best_input = qanswers_sum # or qanswers if you want to keep the pairs
    best_input_q_number = n
  end
end