添加成绩
本课属于 Coddy GDScript 学习旅程的“逻辑与流程”单元。第 44 课,共 78 课。
挑战
简单记录学生的成绩。保留你在前面步骤中写的所有内容。
1. 函数。在其他函数下面,编写 add_grade(student_name: String, grade: int) -> void:
- 如果
student_records中没有这个姓名,就打印Student '<name>' not found.并返回。 - 否则,将成绩追加到学生的
"grades"数组中,并打印Grade <grade> added for student '<name>'.
成绩使用数组而不是集合,因为学生可能两次获得相同的成绩,而且两次成绩都要计入。
2. 命令。在 ["show"] 上方添加一个处理 grade <name> <grade> 的分支,例如 grade Alice 90。它会调用 add_grade(),并将成绩转换为 int。对于以下命令:
add Alice 20 Math Physics
add Bob 22 Biology Chemistry
grade Alice 90
grade Alice 85
grade Bob 75
grade Charlie 80
show
exit输出为:
Student 'Alice' added successfully.
Student 'Bob' added successfully.
Grade 90 added for student 'Alice'.
Grade 85 added for student 'Alice'.
Grade 75 added for student 'Bob'.
Student 'Charlie' not found.
{ "Alice": { "age": 20, "grades": [90, 85], "courses": { "Math": true, "Physics": true } }, "Bob": { "age": 22, "grades": [75], "courses": { "Biology": true, "Chemistry": true } } }
Goodbye!亲手试试
extends Node
# 每个学生:name -> {"age": int, "grades": Array, "courses":课程名称的集合}
var student_records := {}
func _ready():
while true:
var parts := Array(OS.read_string_from_stdin().split(" ", false))
match parts:
["add", var student, var age, ..]:
add_student(student, int(age), parts.slice(3))
["show"]:
print(student_records)
["exit"]:
print("Goodbye!")
break
func add_student(student_name: String, age: int, courses: Array) -> void:
if student_records.has(student_name):
print("Student '%s' already exists." % student_name)
return
var course_set := {}
for course in courses:
course_set[course] = true
student_records[student_name] = {"age": age, "grades": [], "courses": course_set}
print("Student '%s' added successfully." % student_name)
逻辑与流程中的所有课
自己练习: GDScript 在线编译器