Menu
CoddyTech

Добавить оценку

Часть раздела Логика и потоки выполнения путешествия по GDScript на Coddy. Урок 44 из 78.

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. Команда. Добавьте ветку для grade <name> <grade>, например grade Alice 90, перед ["show"]. Она вызывает 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

# Каждый студент: имя -> {"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