Menu
CoddyTech

평균 성적

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

challenge icon

챌린지

쉬움

학생의 평균 성적을 계산하세요. 이전 단계에서 작성한 내용을 모두 유지하세요.

1. 함수. 다른 함수 아래에 calculate_average_grade(student_name: String) -> float를 작성하세요:

  • student_records에 이름이 없으면 Student '<name>' not found.를 출력하고 -1.0을 반환하세요. 실제 평균은 음수가 될 수 없으므로 호출한 쪽에서 해당 학생이 없었다는 것을 알 수 있습니다.
  • 학생에게 아직 성적이 없으면 0.0을 반환하세요.
  • 그렇지 않으면 성적의 합을 성적 개수로 나눈 값을 float로 반환하세요.

2. 명령. ["show"] 위에 average <name>에 대한 분기를 추가하세요. 학생을 찾지 못한 경우를 제외하고 평균을 소수점 둘째 자리까지 출력합니다:

["average", var student]:
	var average := calculate_average_grade(student)
	if average >= 0:
		print("Average grade of '%s': %.2f" % [student, average])

다음 명령을 실행하면

add Alice 20 Math Physics
add Bob 22 Biology Chemistry
grade Alice 90
grade Alice 85
grade Bob 75
average Alice
average Bob
average Charlie
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'.
Average grade of 'Alice': 87.50
Average grade of 'Bob': 75.00
Student 'Charlie' not found.
Goodbye!

직접 해보기

extends Node

# 각 학생: 이름 -> {"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))
			["grade", var student, var grade]:
				add_grade(student, int(grade))
			["enrolled", var student, var course]:
				print(is_enrolled(student, course))
			["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)

func add_grade(student_name: String, grade: int) -> void:
	if not student_records.has(student_name):
		print("Student '%s' not found." % student_name)
		return
	student_records[student_name]["grades"].append(grade)
	print("Grade %d added for student '%s'." % [grade, student_name])

func is_enrolled(student_name: String, course: String) -> bool:
	if not student_records.has(student_name):
		print("Student '%s' not found." % student_name)
		return false
	return student_records[student_name]["courses"].has(course)

논리와 흐름의 모든 레슨

직접 연습해 보세요: 온라인 GDScript 컴파일러