Диапазоны в циклах
Часть раздела Основы путешествия по Swift на Coddy — урок 48 из 86.
Вы использовали диапазоны вида 1...5 в своих циклах, но Swift предлагает больше гибкости в том, как вы определяете эти диапазоны. Давайте изучим различные типы диапазонов и полезный прием для обратного отсчета.
Оператор закрытого диапазона (...) включает оба граничных значения:
for i in 1...3 {
print(i)
}
// Вывод: 1, 2, 3Оператор полуоткрытого диапазона (..<) исключает верхнюю границу, что особенно полезно при работе с индексами, начинающимися с нуля:
for i in 0..<3 {
print(i)
}
// Вывод: 0, 1, 2Иногда вам нужно выполнить цикл в обратном порядке. Метод reversed() позволяет выполнять итерацию в обратном направлении по диапазону:
for i in (1...3).reversed() {
print(i)
}
// Вывод: 3, 2, 1Обратите внимание на скобки вокруг диапазона — они обязательны при вызове reversed() для диапазона. Этот метод идеально подходит для обратного отсчета или когда вам нужно обработать элементы от последнего к первому.
Задание
ЛегкоНапишите функцию countdown, которая принимает n и возвращает строку, содержащую обратный отсчет от n до 1, за которым следует "Go!".
Используйте метод reversed() для диапазона, чтобы выполнить итерацию в обратном порядке и построить строку обратного отсчета.
Логика:
- Создайте диапазон от
1доnи разверните его - Сформируйте строку, где каждое число разделено символом новой строки
- Добавьте "Go!" в последней строке
Параметры:
n(Int): Начальное число для обратного отсчета (1 или больше)
Возвращает: Строку, в которой каждое число обратного отсчета находится на отдельной строке, заканчивающуюся "Go!" (String). Формат:
3
2
1
Go!Например, если n равно 3, функция возвращает "3\n2\n1\nGo!".
Шпаргалка
Swift предоставляет два оператора диапазона для циклов:
Оператор закрытого диапазона (...) включает обе конечные точки:
for i in 1...3 {
print(i)
}
// Вывод: 1, 2, 3Полуоткрытый оператор диапазона (..<) исключает верхнюю границу:
for i in 0..<3 {
print(i)
}
// Вывод: 0, 1, 2Чтобы выполнить итерацию в обратном порядке по диапазону, используйте метод reversed():
for i in (1...3).reversed() {
print(i)
}
// Вывод: 3, 2, 1Примечание: При вызове reversed() требуются круглые скобки вокруг диапазона.
Попробуйте сами
func countdown(n: Int) -> String {
// Напишите код здесь
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСоставное присваиваниеПовторение: Простая математикаОператоры сравнения7Основы ввода-вывода
Функция PrintИнтерполяция строкВвод через ReadLineПреобразование типовПовторение — до 120Повторение — True или False10Функции
Объявление функцииПараметры и аргументыВозвращаемые значенияМетки аргументовПовторение: функция SigmaПовторение: функция валидацииЗначения по умолчанию13Итерирование по последовательностям
Итерирование по элементамМетод enumerateИтерирование по строкам, ч. 1Итерирование по строкам, ч. 22Переменные
Let против VarАннотации типовЧислаСтрокиBooleanСоглашения об именованииИтоги — Инициализация переменных5Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение: простая логикаЛогические операторы. Часть 3Тернарный оператор8Калькулятор разделения счета
Приветственное сообщениеПолучение ввода14Массивы: Продвинутый уровень
Срезы массивов. Часть 1Срезы массивов. Часть 2Операторы последовательностейМетод Contains3Опционалы
Что такое опционалыРазвертывание с помощью if letGuard letОператор объединения с nilИтоги — безопасное развертывание6Принятие решений
Оператор IfКонструкция If - ElseПовторение — Простой калькуляторОператор SwitchSwitch с диапазонами9Циклы
Цикл For-InЦикл WhileЦикл Repeat-WhileBreakContinueПовторение: ФакториалДиапазоны в циклахВложенные циклыПовторение: Динамический ввод