Menu
CoddyTech

添加学生

本课属于 Coddy Ruby 学习旅程的“逻辑与流程”单元。第 49 课,共 56 课。

定义一个 add_student 方法,将新学生登记到共享的 student_records 哈希中。

唯一的分支是拒绝重复项。学生一旦存在,就报告这一情况并直接返回,不要覆盖原有记录。

challenge icon

挑战

简单

在文件顶部,保留 student_records = {}。然后定义一个方法 add_student(name, age, courses),该方法:

  1. 如果 name 已经是 student_records 中的一个键,则打印 Student '<name>' already exists. 并返回。
  2. 否则,将 { age: age, grades: [], courses: courses } 存储在 name 下,并打印 Student '<name>' added.

在文件底部,将测试代码块替换为:

add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts student_records.inspect

预期输出为:

Student 'Alice' added.
Student 'Bob' added.
Student 'Alice' already exists.
{"Alice"=>{:age=>20, :grades=>[], :courses=>["Math", "Physics"]}, "Bob"=>{:age=>22, :grades=>[], :courses=>["Biology", "Chemistry"]}}

由于方法无法访问外层脚本中的局部变量,因此使用 $student_records(一个全局变量)声明 student_records,这样方法就能读取并更新它。在方法内部也使用这个名称。

亲手试试

$student_records = {}

# TODO:定义 add_student(name, age, courses),避免重复添加,
# 存储 { age:, grades: [], courses: },输出已添加或已存在

add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_student("Alice", 21, ["Art"])
puts $student_records.inspect
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Ruby 在线编译器