Answer:
Aquí está el programa en Python:
def crop(message, k): # se define una función que toma una cadena de mensaje y un límite k como parámetros
if len(message) <= k: # si la longitud del mensaje es menor o igual que k
return message #retorna el mensaje tal cual
else: #si la longitud del mensaje supera el límite
return ' '.join(message[:k+1].split(' ')[0:-1]) # corta el mensaje
#las líneas siguientes se utilizan para probar el funcionamiento de la función anterior
test1 = crop("Codibility We test coders",14)
test2 = crop("The quick brown fox jumps over the lazy dog",39)
test3 = crop("Why not",100)
print(test1)
print(test2)
print(test3)
Explanation:
Este método toma un mensaje y un límite de k caracteres como parámetros y devuelve el mensaje recortado.
La instrucción if len(message) <= k: verifica si la longitud del mensaje es menor o igual al límite k. Por ejemplo, si k es Why not y k es 100, la condición resulta falsa. Sin embargo, si se cumple, la función retorna el mensaje completo.
Si la condición anterior es falsa, se ejecuta la parte else que contiene la siguiente sentencia:
return ' '.join(message[:k+1].split(' ')[0:-1])
Esta sentencia utiliza el método split() para dividir el mensaje desde k+1 en una lista de palabras usando el espacio como separador.
Por ejemplo, si el mensaje es Codibility We test coders y k=14 y entonces k+1=15
Entonces message[:k+1] corresponde a la subcadena :
Codibility We
message[:k+1].split(' ') separa el mensaje[:k+1] que es Codibility We
en una lista de palabras individualmente como:
['Codibility', 'We', 't']
Observa que hay una 't', que es el primer carácter de test, que supera el límite k y corta la palabra test. Así que aplicamos un corte aquí
[0:-1] indica desde el inicio de message[:k+1] hasta un elemento (el último de la subcadena) se elimina de la lista (especificado por -1)
Ahora, message[:k+1].split(' ')[0:-1] da:
['Codibility', 'We']
Finalmente, .join concatena todas las palabras en la lista en una cadena usando un separador vacío como carácter.
Así, la sentencia:
return ' '.join(message[:k+1].split(' ')[0:-1])
produce el siguiente resultado:
Codibility We