Rangos en bucles
Parte de la sección Fundamentos del Journey de Swift de Coddy — lección 48 de 86.
Has estado usando rangos como 1...5 en tus bucles, pero Swift ofrece más flexibilidad en cómo defines estos rangos. Exploremos los diferentes tipos de rangos y una técnica útil para contar hacia atrás.
El operador de rango cerrado (...) incluye ambos extremos:
for i in 1...3 {
print(i)
}
// Salida: 1, 2, 3El operador de rango semiabierto (..<) excluye el límite superior, lo cual es especialmente útil cuando se trabaja con índices basados en cero:
for i in 0..<3 {
print(i)
}
// Salida: 0, 1, 2A veces necesitas iterar en orden inverso. El método reversed() te permite iterar hacia atrás a través de un rango:
for i in (1...3).reversed() {
print(i)
}
// Salida: 3, 2, 1Observa los paréntesis alrededor del rango; son obligatorios al llamar a reversed() en un rango. Esta técnica es perfecta para cuentas regresivas o cuando necesitas procesar elementos del último al primero.
Desafío
FácilEscribe una función countdown que reciba n y devuelva una cadena que contenga una cuenta regresiva desde n hasta 1, seguida de "Go!".
Usa el método reversed() en un rango para iterar hacia atrás y construir la cadena de la cuenta regresiva.
Lógica:
- Crea un rango desde
1hastane inviértelo - Construye una cadena con cada número separado por un salto de línea
- Añade "Go!" en la línea final
Parámetros:
n(Int): El número inicial para la cuenta regresiva (1 o mayor)
Devuelve: Una cadena con cada número de la cuenta regresiva en su propia línea, terminando con "Go!" (String). Formato:
3
2
1
Go!Por ejemplo, si n es 3, la función devuelve "3\n2\n1\nGo!".
Hoja de referencia
Swift proporciona dos operadores de rango para los bucles:
El operador de rango cerrado (...) incluye ambos extremos:
for i in 1...3 {
print(i)
}
// Salida: 1, 2, 3El operador de rango semiabierto (..<) excluye el límite superior:
for i in 0..<3 {
print(i)
}
// Salida: 0, 1, 2Para iterar hacia atrás a través de un rango, utiliza el método reversed():
for i in (1...3).reversed() {
print(i)
}
// Salida: 3, 2, 1Nota: Se requieren paréntesis alrededor del rango al llamar a reversed().
Pruébalo tú mismo
func countdown(n: Int) -> String {
// Escribe el código aquí
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores Parte 1
Operadores aritméticosOperador de móduloAsignación compuestaResumen - Matemáticas simplesOperadores de comparación7E/S Básica
Función PrintInterpolación de StringsEntrada ReadLineConversión de TiposRepaso - Hasta 120Repaso - Verdadero o Falso10Funciones
Declarar una funciónParámetros y argumentosValores de retornoEtiquetas de argumentosResumen - Función SigmaResumen - Función de validaciónValores por defecto13Iterar sobre secuencias
Iterar sobre elementosEl método enumerateIterar sobre cadenas P1Iterar sobre cadenas P22Variables
Let vs VarAnotaciones de tiposNúmerosStringsBooleanosConvenciones de nomenclaturaResumen - Inicializar variables5Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Repaso - Lógica simpleOperadores lógicos Parte 3Operador ternario8Calculadora para dividir la cuenta
Mensaje de bienvenidaObtener la entrada de datos11FizzBuzz con un giro
Descripción general del juegoLa función FizzBuzz3Opcionales
Qué son los opcionalesDesempaquetado con If LetGuard LetOperador de coalescencia nulaResumen - Desempaquetado seguro6Toma de decisiones
Sentencia IfIf - ElseRepaso - Calculadora simpleSentencia SwitchSwitch con rangos9Bucles
Bucle For-InBucle WhileBucle Repeat-WhileBreakContinueRepaso - FactorialRangos en buclesBucle anidadoRepaso - Entrada dinámica