Menu
CoddyTech

성적 추가

Coddy GDScript 여정의 논리와 흐름 섹션에 포함된 레슨. 78개 중 44번째.

challenge icon

챌린지

쉬움

학생들의 성적을 기록하세요. 이전 단계에서 작성한 내용은 모두 유지하세요.

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입니다. 이 분기에서는 성적을 int로 변환하여 add_grade()를 호출합니다. 다음 명령을 실행하면

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 컴파일러