# Nos piden una función que nos diga si una cadena
# tiene letras repetidas consecutivas.
#
# Ejemplos:
# letras_repetidas("hola") -> False
# letras_repetidas("sevilla") -> True
#
# En "sevilla" hay dos letras "l" seguidas.
cadena = "hola"
# Así NO funciona:
#
# for letra in cadena:
#
# Porque con este tipo de recorrido solo tenemos
# la letra actual, pero no sabemos fácilmente
# cuál es la siguiente letra para compararla.
# ---------------------------------------------------
# PRIMERA SOLUCIÓN
# ---------------------------------------------------
# Recorremos la cadena usando posiciones (índices)
# para poder comparar una letra con la siguiente.
def letras_repetidas(cadena):
# len(cadena) nos dice cuántas letras tiene la cadena.
#
# range(len(cadena)-1) genera números desde 0
# hasta la penúltima posición.
#
# Restamos 1 porque vamos a usar i+1 y no queremos
# salirnos del tamaño de la cadena.
for i in range(len(cadena) - 1):
# cadena[i] -> letra actual
# cadena[i + 1] -> letra siguiente
if cadena[i] == cadena[i + 1]:
# Si encontramos dos letras iguales seguidas,
# devolvemos True inmediatamente.
return True
# Si termina el bucle y no encontramos letras repetidas,
# devolvemos False.
return False
print(letras_repetidas("hola")) # False
print(letras_repetidas("sevilla")) # True
print(letras_repetidas("bliss")) # True
# ---------------------------------------------------
# SEGUNDA SOLUCIÓN
# ---------------------------------------------------
# En vez de usar posiciones, guardamos la letra anterior
# y la comparamos con la actual.
def letras_repetidas2(cadena):
# Variable donde guardaremos la letra anterior.
# Al principio está vacía porque todavía no hemos
# recorrido ninguna letra.
anterior = ""
# Recorremos la cadena letra por letra.
for letra in cadena:
# Comparamos la letra actual con la anterior.
if letra == anterior:
# Si son iguales, hay letras repetidas consecutivas.
return True
# Guardamos la letra actual como "anterior"
# para la siguiente vuelta del bucle.
anterior = letra
# Si terminamos el recorrido sin encontrar repeticiones,
# devolvemos False.
return False
print(letras_repetidas2("hola")) # False
print(letras_repetidas2("sevilla")) # True
print(letras_repetidas2("bliss")) # True