Add exercises 18

Signed-off-by: Manuel Vergara <manuel@vergaracarmona.es>
This commit is contained in:
Manuel Vergara 2023-09-30 21:38:24 +02:00
parent 58aac99650
commit f391b1b42a
2 changed files with 111 additions and 0 deletions

View File

@ -0,0 +1,110 @@
"""
01_regex.py
"""
import re
# Ejercicios: Nivel 1
# 1. ¿Cuál es la palabra más frecuente en el siguiente párrafo?
paragraph = 'I love teaching. If you do not love teaching what else can you love. I love Python if you do not love something which can give you all the capabilities to develop an application what else can you love.'
# Convertimos el párrafo a minúsculas
paragraph = paragraph.lower()
# Separamos el párrafo en palabras
words = paragraph.split()
# Creamos un diccionario para contar la frecuencia de cada palabra
word_freq = {}
for word in words:
if word in word_freq:
word_freq[word] += 1
else:
word_freq[word] = 1
# Encontramos la palabra más frecuente
most_freq_word = max(word_freq, key=word_freq.get)
print("La palabra más frecuente es:", most_freq_word)
# 2. La posición de algunas partículas
# en el eje x horizontal son - 12, -4, -3 y - 1
# en la dirección negativa,
# 0 en el origen,
# 4 y 8 en la dirección positiva.
# Extrae estos números de todo el texto
# y encuentra la distancia entre
# las dos partículas más lejanas.
text = "La posición de algunas partículas en el eje x horizontal son -12, -4, -3 y -1 en la dirección negativa, 0 en el origen, 4 y 8 en la dirección positiva."
# Extraemos los números del texto
numbers = re.findall(r'-?\d+', text)
# Convertimos los números a enteros
numbers = [int(num) for num in numbers]
# Encontramos la distancia entre las dos partículas más lejanas
distance = max(numbers) - min(numbers)
print("La distancia entre las dos partículas más lejanas es:", distance)
# Ejercicios: Nivel 2
# 1. Escribe un patrón que identifique
# si una cadena es una variable válida en Python.
# Definimos una función que verifica si una cadena es una variable válida en Python
def is_valid_variable(variable):
pattern = r'^[a-zA-Z_]\w*$'
if bool(re.match(pattern, variable)):
return f"La variable {variable} es válida"
else:
return f"La variable {variable} no es válida"
# Ejemplos de variables válidas e inválidas
valid_variables = ['my_var', 'myVar', '_my_var', 'myVar123', 'my_var_123']
invalid_variables = ['123myvar', 'my-var', 'my var', 'my$var']
# Verificamos si las variables son válidas o no
for variable in valid_variables:
print(variable, is_valid_variable(variable))
for variable in invalid_variables:
print(variable, is_valid_variable(variable))
# Ejercicios: Nivel 3
# 1. Limpia el siguiente texto. Después de limpiarlo, cuenta las tres palabras más frecuentes en la cadena.
sentence = '''%I $am@% a %tea@cher%, &and& I lo%#ve %tea@ching%;. There $is nothing; &as& mo@re rewarding as educa@ting &and& @emp%o@wering peo@ple. ;I found tea@ching m%o@re interesting tha@n any other %jo@bs. %Do@es thi%s mo@tivate yo@u to be a tea@cher!?'''
# Limpiamos el texto
clean_sentence = re.sub(r'[^a-zA-Z\s]', '', sentence)
# Convertimos el texto a minúsculas
clean_sentence = clean_sentence.lower()
# Separamos el texto en palabras
words = clean_sentence.split()
# Creamos un diccionario para contar la frecuencia de cada palabra
word_freq = {}
for word in words:
if word in word_freq:
word_freq[word] += 1
else:
word_freq[word] = 1
# Encontramos las tres palabras más frecuentes
most_freq_words = sorted(word_freq, key=word_freq.get, reverse=True)[:3]
print("Las tres palabras más frecuentes son:", most_freq_words)

View File

@ -69,5 +69,6 @@ print(clean_text(sentence));
I am a teacher and I love teaching There is nothing as more rewarding as educating and empowering people I found teaching more interesting than any other jobs Does this motivate you to be a teacher
print(most_frequent_words(cleaned_text)) # [(3, 'I'), (2, 'teaching'), (2, 'teacher')]
```
[Solución](01_regex.py)
[<< Day 17](../17_Manejo_de_excepciones/README.md) | [Day 19 >>](../19_Manipulación_de_archivos/README.md)