Menu
CoddyTech

Проверка принадлежности

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

Ты уже проверяешь принадлежность с помощью in и not in: "cat" in pets ищет элемент массива, а "ell" in "hello" — текст внутри строки. Ещё три случая встречаются постоянно.

В словаре in проверяет только ключи. Чтобы найти значение, проверьте массив, возвращаемый values():

var grades := {"Alice": 85, "Bob": 90}
print("Alice" in grades)
print(90 in grades)
print(90 in grades.values())
true
false
true

Оператор проверки вхождения также сравнивает типы. Текст, прочитанный с помощью OS.read_string_from_stdin(), является строкой, а строка "90" — это не целое число 90:

var scores := [70, 90]
print("90" in scores)
print(int("90") in scores)
false
true

Массив констант с допустимыми значениями и in заменяет длинную цепочку из or и также работает в защитном условии:

const DIRECTIONS = ["north", "south", "east", "west"]
var dir := "west"
match dir:
	var d when d in DIRECTIONS:
		print("Going ", d)
	_:
		print("You cannot go there")
Going west
challenge icon

Задание

Легко

В программе есть массив names с именами учеников класса и словарь grades с учениками, у которых уже есть оценка. Она считывает имя ученика в student, а оценку — в grade (как текст).

Выведите три строки:

  1. NAME is in the class. или NAME is not in the class., проверяя names
  2. NAME has a grade. или NAME has no grade., проверяя ключи grades
  3. Someone scored GRADE. или Nobody scored GRADE., проверяя значения grades

Замените NAME и GRADE на введённые значения. Для входных данных Dana и 85 вывод будет таким:

Dana is in the class.
Dana has no grade.
Someone scored 85.

Попробуйте сами

extends Node

func _ready():
	var names := ["Alice", "Bob", "Charlie", "Dana"]
	var grades := {"Alice": 85, "Bob": 90, "Charlie": 78}
	var student := OS.read_string_from_stdin()
	var grade := OS.read_string_from_stdin()
	# Выведите три строки
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и потоки выполнения

Потренируйтесь самостоятельно: Онлайн-компилятор GDScript