创建一个函数,该函数将数字作为参数,并根据该数字返回等级。
得分等级
大于1或小于0.6&f;#< f'
0.9或更高" A"
0.8或更高" B"
0.7或更高" C"
0.6或更高" D"
我试图想出另一种编写此代码的方法,因为解释器不会接受它。有人可以帮助我吗?
def grader(score)
if score >= 0.9
return "A"
elsif score >= 0.8
return "B"
elsif score >= 0.7
return "C"
elsif score >= 0.6
return "D"
elsif score < 0.5 or score > 1.01
return "F"
else
return "O"
end
end
答案 0 :(得分:4)
我建议为此目的使用案例陈述:
def grader(score)
case score
when 0.9..1 then 'A'
when 0.8...0.9 then 'B'
when 0.7...0.8 then 'C'
when 0.6...0.7 then 'D'
else 'F'
end
end
答案 1 :(得分:0)
您可以使用Hash
之类的配置。
GRADE_TABLE = {(0.9..1) => 'A', (0.8..0.9) => 'B', (0.7..0.8) => 'C', (0.6..0.7) => 'D'}
def get_grade(score)
GRADE_TABLE.each{|sc, grade| return grade if sc.include?(score)}
'F'
end
答案 2 :(得分:0)
GRADES = [[0.9, "A"], [0.8, "B"], [0.7, "C"], [0.6, "D"], [-Float::INFINITY, "F"]]
def grader(score)
score = 0 if score > 1
GRADES.find { |k,_| score >= k }.last
end
grader 0.50 #=> "F"
grader 0.60 #=> "D"
grader 0.65 #=> "D"
grader 0.70 #=> "C"
grader 0.79 #=> "C"
grader 0.82 #=> "B"
grader 0.93 #=> "A"
grader 1.07 #=> "F"