Ruby 如何从for循环计算用户输入的数据
此代码将问题重复5次。如何检索用户输入的数据?我试图计算所有10个回答的总和,以及每对回答的总和最高的指数 我尝试了一个尽可能接近您的解决方案,同时仍能产生预期的结果: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 要获取所有对的总和,请执
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