Menu
CoddyTech

Not Ortalaması

Coddy'nin GDScript Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 46 / 78.

challenge icon

Görev

Kolay

Bir öğrencinin not ortalamasını hesapla. Önceki adımlarda yazdığın her şeyi koru.

1. Fonksiyon. Diğer fonksiyonların altına calculate_average_grade(student_name: String) -> float yaz:

  • student_records içinde bu isim yoksa Student '<name>' not found. yazdır ve -1.0 döndür. Gerçek bir ortalama negatif olamayacağından, çağıran taraf öğrencinin bulunamadığını anlayabilir.
  • Öğrencinin henüz notu yoksa 0.0 döndür.
  • Aksi hâlde notların toplamını not sayısına bölüp float olarak döndür.

2. Komut. ["show"] satırının üstüne average <name> için bu dalı ekle. Öğrenci bulunamadıysa ortalamayı yazdırmaz; aksi hâlde iki ondalık basamakla yazdırır:

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

Şu komutlar için

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

çıktı şöyledir:

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!

Kendin dene

extends Node

# Her öğrenci: ad -> {"age": int, "grades": Array, "courses": ders adlarından oluşan bir küme}
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)

Mantık ve Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online GDScript derleyicisi