成績を追加
CoddyのGDScriptジャーニー「ロジックとフロー」セクションの一部。レッスン 44/78。
チャレンジ
簡単生徒の成績を記録します。前の手順で書いたものはすべて残してください。
1. 関数。ほかの関数の下に、add_grade(student_name: String, grade: int) -> voidを書きます。
student_recordsに名前がない場合は、Student '<name>' not found.を出力して戻ります。- それ以外の場合は、生徒の
"grades"配列に成績を追加し、Grade <grade> added for student '<name>'.を出力します。
成績はセットではなく配列です。生徒が同じ成績を2回取ることがあり、どちらも数えるためです。
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オンラインコンパイラ