Skip to content

Commit d59d37b

Browse files
authored
Merge pull request mouredev#4536 from any7dev/main
#12 - Python
2 parents 0407501 + 7e689e9 commit d59d37b

File tree

7 files changed

+429
-0
lines changed

7 files changed

+429
-0
lines changed
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
""" /*
2+
* IMPORTANTE: Sólo debes subir el fichero de código como parte del ejercicio.
3+
*
4+
* EJERCICIO:
5+
* Desarrolla un programa capaz de crear un archivo XML y JSON que guarde los
6+
* siguientes datos (haciendo uso de la sintaxis correcta en cada caso):
7+
* - Nombre
8+
* - Edad
9+
* - Fecha de nacimiento
10+
* - Listado de lenguajes de programación
11+
* Muestra el contenido de los archivos.
12+
* Borra los archivos.
13+
*
14+
* DIFICULTAD EXTRA (opcional):
15+
* Utilizando la lógica de creación de los archivos anteriores, crea un
16+
* programa capaz de leer y transformar en una misma clase custom de tu
17+
* lenguaje los datos almacenados en el XML y el JSON.
18+
* Borra los archivos.
19+
*/ """
20+
21+
#EJERCICIO
22+
import json
23+
import xml.etree.ElementTree as ET
24+
import os
25+
26+
#JSON
27+
contenido = {
28+
"Nombre": "Ana",
29+
"Edad": 36,
30+
"Fecha Nacimiento": "11/03/1988",
31+
"Lenguajes": ["Cobol", "Python"]
32+
}
33+
34+
with open ("archivo.json", 'w') as archivo:
35+
json.dump(contenido, archivo, indent=3)
36+
37+
with open ("archivo.json", 'r') as archivo:
38+
print(json.load(archivo))
39+
40+
os.remove("archivo.json")
41+
42+
#XML
43+
archivo = "archivo.xml"
44+
45+
#Creamos el árbol con los datos
46+
contenido = ET.Element("contenido")
47+
datos = ET.SubElement(contenido, "datos")
48+
ET.SubElement(datos, "Nombre").text = "Ana"
49+
ET.SubElement(datos, "Edad").text = "36"
50+
ET.SubElement(datos, "Fecha_Nacimiento").text = "11/03/1988"
51+
ET.SubElement(datos, "Lenguajes").text = "Cobol, Python"
52+
53+
#Creamos el fichero
54+
ET.indent(contenido)
55+
et = ET.ElementTree(contenido)
56+
et.write(archivo, xml_declaration=True, encoding="UTF-8")
57+
58+
with open (archivo, 'r') as a:
59+
print(a.read())
60+
61+
os.remove("archivo.xml")
62+
63+
64+
65+
66+
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
""" /*
2+
* EJERCICIO:
3+
* Crea una función que se encargue de sumar dos números y retornar
4+
* su resultado.
5+
* Crea un test, utilizando las herramientas de tu lenguaje, que sea
6+
* capaz de determinar si esa función se ejecuta correctamente.
7+
*
8+
* DIFICULTAD EXTRA (opcional):
9+
* Crea un diccionario con las siguientes claves y valores:
10+
* "name": "Tu nombre"
11+
* "age": "Tu edad"
12+
* "birth_date": "Tu fecha de nacimiento"
13+
* "programming_languages": ["Listado de lenguajes de programación"]
14+
* Crea dos test:
15+
* - Un primero que determine que existen todos los campos.
16+
* - Un segundo que determine que los datos introducidos son correctos.
17+
*/ """
18+
19+
#EJERCICIO
20+
import unittest
21+
from assertpy import assert_that
22+
23+
def suma (num1, num2):
24+
return num1+num2
25+
26+
class TestSuma(unittest.TestCase):
27+
def test(self):
28+
resultado = suma (2, 3)
29+
assert_that(resultado).is_instance_of(int)
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
""" /*
2+
* EJERCICIO:
3+
* Crea dos variables utilizando los objetos fecha (date, o semejante) de tu lenguaje:
4+
* - Una primera que represente la fecha (día, mes, año, hora, minuto, segundo) actual.
5+
* - Una segunda que represente tu fecha de nacimiento (te puedes inventar la hora).
6+
* Calcula cuántos años han transcurrido entre ambas fechas.
7+
*
8+
* DIFICULTAD EXTRA (opcional):
9+
* Utilizando la fecha de tu cumpleaños, formatéala y muestra su resultado de
10+
* 10 maneras diferentes. Por ejemplo:
11+
* - Día, mes y año.
12+
* - Hora, minuto y segundo.
13+
* - Día de año.
14+
* - Día de la semana.
15+
* - Nombre del mes.
16+
* (lo que se te ocurra...)
17+
*/ """
18+
19+
#EJERCICIO
20+
import datetime
21+
22+
fecha_actual = datetime.datetime.now()
23+
fecha_nacimiento = datetime.datetime(1988, 3, 11, 15, 0, 0)
24+
print(fecha_actual.year - fecha_nacimiento.year)
25+
26+
#DIFICULTAD EXTRA
27+
print(fecha_nacimiento.strftime("%d-%m-%y")) #1
28+
print(fecha_nacimiento.strftime("%H:%M:%S")) #2
29+
print(fecha_nacimiento.timetuple()[7])#3
30+
print(fecha_nacimiento.isoweekday())#4
31+
print(fecha_nacimiento.strftime("%B"))#5
32+
print(fecha_nacimiento.ctime())#6
33+
print(fecha_nacimiento.strftime("%A, %d. %B %Y %I:%M%p"))#7
34+
print(fecha_nacimiento.isocalendar()[1]) #8 Número de la semana
35+
print(fecha_nacimiento.strftime("%d %m %Y")) #9
36+
print(fecha_nacimiento.toordinal())#10 Ordinal gregoriano proléptico de la fecha
37+
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
""" /*
2+
* EJERCICIO:
3+
* Utilizando tu lenguaje, crea un programa capaz de ejecutar de manera
4+
* asíncrona una función que tardará en finalizar un número concreto de
5+
* segundos parametrizables. También debes poder asignarle un nombre.
6+
* La función imprime su nombre, cuándo empieza, el tiempo que durará
7+
* su ejecución y cuando finaliza.
8+
*
9+
* DIFICULTAD EXTRA (opcional):
10+
* Utilizando el concepto de asincronía y la función anterior, crea
11+
* el siguiente programa que ejecuta en este orden:
12+
* - Una función C que dura 3 segundos.
13+
* - Una función B que dura 2 segundos.
14+
* - Una función A que dura 1 segundo.
15+
* - Una función D que dura 1 segundo.
16+
* - Las funciones C, B y A se ejecutan en paralelo.
17+
* - La función D comienza su ejecución cuando las 3 anteriores han
18+
* finalizado.
19+
*/ """
20+
21+
#EJERCICIO
22+
import asyncio
23+
import time
24+
25+
async def funcion_asincrona(segundos):
26+
nombre = "Hola Mundo asíncrono"
27+
print(nombre)
28+
print(time.strftime("%H:%M:%S"))
29+
print(segundos)
30+
await asyncio.sleep(segundos)
31+
print(time.strftime("%H:%M:%S"))
32+
33+
asyncio.run(funcion_asincrona(3))
34+
35+
#DIFICULTAD EXTRA
36+
async def funcion_a():
37+
print("Soy la función A")
38+
await asyncio.sleep(1)
39+
40+
async def funcion_b():
41+
print("Soy la función B")
42+
await asyncio.sleep(2)
43+
44+
async def funcion_c():
45+
print("Soy la función C")
46+
await asyncio.sleep(3)
47+
48+
async def funcion_d():
49+
print("Soy la función D")
50+
await asyncio.sleep(1)
51+
52+
async def extra():
53+
await asyncio.gather(funcion_a(), funcion_b(), funcion_c())
54+
await funcion_d()
55+
56+
57+
asyncio.run(extra())
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
""" /*
2+
* EJERCICIO:
3+
* Utilizando tu lenguaje, explora el concepto de expresiones regulares,
4+
* creando una que sea capaz de encontrar y extraer todos los números
5+
* de un texto.
6+
*
7+
* DIFICULTAD EXTRA (opcional):
8+
* Crea 3 expresiones regulares (a tu criterio) capaces de:
9+
* - Validar un email.
10+
* - Validar un número de teléfono.
11+
* - Validar una url.
12+
*/ """
13+
14+
#EJERCICIO
15+
import re
16+
17+
texto = ("La sociedad francesa estaba dividida en estamentos dependiendo de sus clases sociales",
18+
"el poder mas alto lo tenía el rey, detrás estaban la nobleza y el clero y el nivel mas bajo de poder",
19+
"lo tenia el tercer estado que estaba constituido por la burguesía, los artesanos y los campesinos.",
20+
"Los Estados Generales eran una asamblea, compuesta por tres ordenes separados: el clero, la nobleza y el grupo formado",
21+
"por burguesía y campesinado. Este último orden se conoce como el tercer estadeo, término que usaremos para referirnos",
22+
"a él en lo sucesivo. Dicha asamblea se había citado por ultima vez en 1614 y el dramatismo de la situación obligó al",
23+
"gobierno a convocarla nuevamente.",
24+
"Luis XVI cedió a las presiones de la reina María Antonieta y del conde de Artois y dio instrucciones para que varios",
25+
"regimientos extranjeros leales se concentraran en París y Versailles. Al mismo tiempo, Necker fue nuevamente destituido.",
26+
"El pueblo de París respondió con la insurrección ante estos actos de provocación; los disturbios comenzaron el 12 de julio",
27+
"y las multitudes asaltaron y tomaron La Bastilla -una prisión real que simbolizaba el despotismo de los Borbones- el 14",
28+
"de julio.",
29+
"El 5 de octubre de 1789, las mujeres parisinas partieron desde los barrios obreros hacia la residencia real de Versailles,",
30+
"este suceso dió comienzo a la revolución.",
31+
"A fines de 1792 comenzó el proceso de Convención contra Luis XVI, quien fue juzgado y condenado a la guillotina por mayoría",
32+
"de votos. El 21 de enero de 1793, Luis subió al cadalso, inconmovible hasta el último momento en el sentimiento",
33+
"de su inocencia. La noticia de la muerte del rey produjo indignación en Inglaterra, la que despidió al embajador o",
34+
"representante francés. Francia contestó declarando la guerra a Inglaterra y a Holanda, su aliada.")
35+
36+
patron1 = re.findall(r"\b(\d{1,})\b", str(texto))
37+
print(patron1)
38+
for match in re.finditer(r"\b(\d{1,})\b", str(texto)):
39+
print(match.group())
40+
41+
patron2 = re.findall("[0-9]", str(texto))
42+
print(patron2)
43+
44+
#DIFICULTAD EXTRA
45+
email1 = "ana@ana.es"
46+
email2 = "-1.3@_dev.com"
47+
email3 = "12345"
48+
49+
patron_email = r"\b[a-z0-9\"#$% &`*+-_.\/|\^\{\} ~]+[a-z0-9]@[a-z0-9-]+.[a-z]{2,}\b"
50+
51+
if re.match(patron_email, email1):
52+
print(f"{email1} válido")
53+
else:
54+
print(f"{email1} no válido")
55+
56+
if re.match(patron_email, email2):
57+
print(f"{email2} válido")
58+
else:
59+
print(f"{email2} no válido")
60+
61+
if re.match(patron_email, email3):
62+
print(f"{email3} válido")
63+
else:
64+
print(f"{email3} no válido")
65+
66+
tlf1 = "911203650"
67+
tlf2 = "541201459"
68+
tlf3 = "770777007"
69+
70+
patron_tlf = r"\b[6-9]+[0-9]{8}\b"
71+
72+
if re.match(patron_tlf,tlf1):
73+
print(f"{tlf1} válido")
74+
else:
75+
print(f"{tlf1} no válido")
76+
77+
if re.match(patron_tlf,tlf2):
78+
print(f"{tlf2} válido")
79+
else:
80+
print(f"{tlf2} no válido")
81+
82+
if re.match(patron_tlf,tlf3):
83+
print(f"{tlf3} válido")
84+
else:
85+
print(f"{tlf3} no válido")
86+
87+
88+
url1 = "http://www.hack.com"
89+
url2 = "123.com"
90+
url3 = "hola_!3.es"
91+
92+
patron_url = "(http|https|ftp):\/\/[w]{3}\.[a-z0-9]+\.[a-z0-9]{2,}"
93+
94+
if re.match(patron_url,url1):
95+
print(f"{url1} válida")
96+
else:
97+
print(f"{url1} no válida")
98+
99+
if re.match(patron_url,url2):
100+
print(f"{url2} válido")
101+
else:
102+
print(f"{url2} no válida")
103+
104+
if re.match(patron_url,url3):
105+
print(f"{url3} válida")
106+
else:
107+
print(f"{url3} no válida")
108+
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
""" /*
2+
* EJERCICIO:
3+
* Utilizando tu lenguaje, emplea 3 mecanismos diferentes para imprimir
4+
* números del 1 al 10 mediante iteración.
5+
*
6+
* DIFICULTAD EXTRA (opcional):
7+
* Escribe el mayor número de mecanismos que posea tu lenguaje
8+
* para iterar valores. ¿Eres capaz de utilizar 5? ¿Y 10?
9+
*/ """
10+
11+
#EJERCICIO
12+
for i in range(1, 11): #1
13+
print(i)
14+
15+
i = 1
16+
while i<=10: #2
17+
print(i)
18+
i += 1
19+
20+
lista_numeros = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] #3
21+
for i in lista_numeros:
22+
print(i)
23+
24+
#DIFICULTAD EXTRA
25+
def iterar(numero):
26+
if numero <= 10:
27+
print(numero)
28+
iterar(numero+1) #4
29+
30+
iterar(1)
31+
32+
for num in enumerate(lista_numeros): #5
33+
print(num)
34+
35+
zip_numeros = zip(lista_numeros) #6
36+
for num in zip_numeros:
37+
print(num)
38+
39+
dict_numeros = {"n1":1, "n2":2, "n3":3, "n4":4, "n5":5, "n6":6, "n7":7, "n8":8, "n9":9, "n10":10}
40+
for n, numero in dict_numeros.items(): #7
41+
print(n, numero)
42+
43+
def generador(n):
44+
contador = 1
45+
while contador <= n:
46+
yield contador #8
47+
contador += 1
48+
49+
for numero in generador(10):
50+
print(numero)
51+
52+
mi_iterador = iter(lista_numeros) #9
53+
print(next(mi_iterador))
54+
print(next(mi_iterador))
55+
print(next(mi_iterador))
56+
print(next(mi_iterador))
57+
print(next(mi_iterador))
58+
print(next(mi_iterador))
59+
print(next(mi_iterador))
60+
print(next(mi_iterador))
61+
print(next(mi_iterador))
62+
print(next(mi_iterador))
63+
64+
print([num for num in lista_numeros]) #10
65+
66+
lista_numeros15= [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
67+
68+
def menores(n):
69+
return n <= 10
70+
71+
lista_numeros15_filtrada = filter(menores, lista_numeros15) #11
72+
print(list(lista_numeros15_filtrada))
73+
74+
suma_lista = map(lambda n: n + 0, lista_numeros) #12
75+
print(list(suma_lista))
76+

0 commit comments

Comments
 (0)