Изменение хэшей
Часть раздела Основы путешествия по Ruby на Coddy. Урок 75 из 88.
Хеши не остаются неизменными после создания. По мере выполнения программы можно добавлять новые пары «ключ-значение», обновлять существующие значения и удалять записи.
Чтобы добавить новую пару или обновить существующее значение, присвойте значение ключу, используя квадратные скобки:
person = {"name" => "Alice", "age" => 25}
person["city"] = "Paris" # Добавляет новую пару «ключ — значение»
person["age"] = 26 # Обновляет существующее значение
puts person # Выводит: {"name"=>"Alice", "age"=>26, "city"=>"Paris"}Если ключ существует, значение заменяется. Если его не существует, в хеш добавляется новая пара.
Чтобы удалить пару «ключ-значение», используйте метод delete с ключом, который хотите удалить:
person = {"name" => "Alice", "age" => 25, "city" => "Paris"}
person.delete("city")
puts person # Выводит: {"name"=>"Alice", "age"=>25}Метод delete возвращает удалённое значение, что может быть полезно, если вам нужно его использовать:
person = {"name" => "Alice", "age" => 25}
removed_age = person.delete("age")
puts removed_age # Выводит: 25Если попытаться удалить несуществующий ключ, Ruby просто вернёт nil, не вызвав ошибку.
Задание
ЛегкоПрочитайте четыре строки ввода:
- Имя студента (строка)
- Исходная оценка (целое число)
- Новая оценка для обновления (целое число)
- Новая пара «ключ-значение» в формате
key:value(например,subject:Math)
Создайте хэш с именем student со следующими исходными парами «ключ-значение»:
"name"соответствует имени студента"grade"соответствует исходной оценке (как целому числу)
Затем внесите следующие изменения:
- Обновите ключ
"grade", указав новое значение оценки - Добавьте новую пару «ключ-значение», используя ключ и значение из четвёртой строки ввода (значение должно остаться строкой)
- Удалите ключ
"name"из хэша и сохраните удалённое значение
Выведите удалённое имя в первой строке, а затем выведите итоговый хэш во второй строке.
Например, если входные данные — Alice, 85, 92 и subject:Math, вывод должен быть таким:
Alice
{"grade"=>92, "subject"=>"Math"}Если входные данные — Bob, 70, 75 и status:passing, вывод должен быть таким:
Bob
{"grade"=>75, "status"=>"passing"}Если входные данные — Charlie, 100, 95 и note:excellent, вывод должен быть таким:
Charlie
{"grade"=>95, "note"=>"excellent"}Попробуйте сами
# Считайте входные данные
name = gets.chomp
initial_grade = gets.to_i
new_grade = gets.to_i
key_value_pair = gets.chomp
# TODO: Напишите свой код ниже
# 1. Создайте хеш с именем 'student' и ключами "name" и "grade"
# 2. Обновите значение ключа "grade", указав новую оценку
# 3. Разберите key_value_pair и добавьте полученную пару в хеш
# 4. Удалите ключ "name" и сохраните удалённое значение
# Выведите удалённое имя
puts removed_name
# Выведите итоговый хеш
puts studentВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логикаЛогические операторы. Часть 3Логические операторы. Часть 47Калькулятор разделения счета
Приветственное сообщениеПолучение пользовательского ввода13Продвинутая работа с массивами
Срезы массивов через диапазоныСрезы массивов через индексыОператоры массивовМетод include?2Переменные и типы данных
Числа и переменныеСтроковый тип данныхЛогический тип данныхТип данных SymbolПроверка типов данныхПравила именованияПовторение: создание переменных5Принятие решений
Оператор IfКонструкция If - ElseПовторение — Простой калькуляторВложенные конструкции If - ElseОператор Unless8Циклы
Цикл For с диапазонамиЦикл WhileОператор BreakОператор NextПовторение: ФакториалЦикл TimesЦикл UntilВложенные циклыПовторение: Динамический ввод3Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСокращенная арифметикаИтоги: простая математикаОператоры сравнения6Основы ввода-вывода
Вывод с помощью putsВывод с помощью print и pВывод с переменнымиВвод с помощью getsМетод chompПреобразование типовИтоги — Калькулятор возрастаИтоги — Истина или ложьПотренируйтесь самостоятельно: Онлайн-компилятор Ruby