gpt4 book ai didi

ruby - 在 Ruby 中将值设置为数字范围

转载 作者:太空宇宙 更新时间:2023-11-03 17:34:27 25 4
gpt4 key购买 nike

我的问题是我是否可以使用范围作为散列中键值对中的值。我正在解决一个问题,我试图为平均数字等级(数字数组)返回字母等级(A-F)。我有一个可行的解决方案,但我遇到了一些有趣的事情。这是我的代码:

def get_grade(array)

avg = (array.inject {|num, x| num + x}) / array.length

grades = {
"A" => [90..10]
"B" => [80..89],
"C" => [70..79],
"D" => [60..69],
"F" => [0..59],
}
grades.default = "Error"

puts grades.key(avg)
end

arraya = [100,90,100,99,99]
puts get_grade(arraya)

我知道我可以用 case 或 if 语句返回字母等级。似乎我应该可以使用哈希来代替,但它不起作用。为什么我不能设置一个范围作为值的散列?谢谢。

最佳答案

您可以使用 case 语句:

def get_grade(scores)
case scores.inject(&:+) / scores.length
when 90..100; 'A'
when 80..89; 'B'
when 70..79; 'C'
when 60..69; 'D'
when 0..59; 'F'
else; 'Error'
end
end

arraya = [100,90,100,99,99]
puts get_grade(arraya)
#=> A

关于ruby - 在 Ruby 中将值设置为数字范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21434991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com