题目
实现一个根据分数返回等级的方法
信息
- 类型:问答
- 难度:⭐
考点
方法定义,条件判断,字符串操作
快速回答
定义一个接收分数参数的方法,使用条件判断返回对应的等级:
- 90-100 → 'A'
- 80-89 → 'B'
- 70-79 → 'C'
- 60-69 → 'D'
- 低于60 → 'F'
示例代码:
def get_grade(score)
if score >= 90
'A'
elsif score >= 80
'B'
elsif score >= 70
'C'
elsif score >= 60
'D'
else
'F'
end
end
## 解析
原理说明
本题考察Ruby基础语法:
- 方法定义:使用
def关键字创建可重用代码块 - 条件判断:通过
if/elsif/else实现多分支逻辑控制 - 返回值:Ruby方法默认返回最后执行的表达式结果
代码示例
基础实现方案:
def get_grade(score)
if score >= 90
'A'
elsif score >= 80
'B'
elsif score >= 70
'C'
elsif score >= 60
'D'
else
'F'
end
end
# 测试用例
puts get_grade(95) # => 'A'
puts get_grade(82) # => 'B'
puts get_grade(75) # => 'C'
puts get_grade(63) # => 'D'
puts get_grade(42) # => 'F'最佳实践
- 边界处理:明确包含等于边界值的情况(如
>=90) - 参数验证:添加输入合法性检查(可选):
raise ArgumentError, "分数必须在0-100之间" unless (0..100).include?(score) - 代码可读性:保持条件判断的降序排列,避免逻辑混乱
常见错误
- 顺序错误:若先判断
score >= 60会导致所有60+分数都返回'D' - 遗漏边界:使用
>代替>=会使90分变成'B'级 - 缺少默认分支:未处理
else情况可能导致返回nil
扩展知识
- case语句实现:
def get_grade(score) case score when 90..100 then 'A' when 80..89 then 'B' when 70..79 then 'C' when 60..69 then 'D' else 'F' end end - 三元表达式(适用于简单逻辑):
result = score >= 60 ? 'Pass' : 'Fail' - 方法返回值:Ruby中无需显式
return,但显式返回可提高可读性