평균 성적
Coddy GDScript 여정의 논리와 흐름 섹션에 포함된 레슨. 78개 중 46번째.
챌린지
쉬움학생의 평균 성적을 계산하세요. 이전 단계에서 작성한 내용을 모두 유지하세요.
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 컴파일러