Skip to content

Commit ca8aa97

Browse files
authored
Merge pull request mouredev#7474 from davidrguez98/main
#13 - Python
2 parents 65bf64b + 22533c7 commit ca8aa97

File tree

3 files changed

+154
-0
lines changed

3 files changed

+154
-0
lines changed
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
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+
21+
import unittest
22+
from datetime import datetime, date
23+
24+
def sumar(a, b):
25+
if not isinstance(a, (int, float)) or not isinstance(b, (int,float)):
26+
raise ValueError("Los argumentos deben de ser enteros o decimales.")
27+
return a + b
28+
29+
class TestSumar(unittest.TestCase):
30+
def test_sumar(self):
31+
self.assertEqual(sumar(5, 7), 12)
32+
self.assertEqual(sumar(5, -7), -2)
33+
self.assertEqual(sumar(0, 0), 0)
34+
self.assertEqual(sumar(2.5, 2.1), 4.6)
35+
36+
def test_sumar_type(self):
37+
with self.assertRaises(ValueError):
38+
sumar("5", 7)
39+
with self.assertRaises(ValueError):
40+
sumar(5, "a")
41+
42+
#DIFICULTAD EXTRA
43+
44+
data = {
45+
"name" : "David",
46+
"age" : 26,
47+
"birth_date" : datetime.strptime("10-03-98", "%d-%m-%y").date(),
48+
"programming_languages" : ["Python", "HTML", "CSS"]
49+
}
50+
51+
class TestData(unittest.TestCase):
52+
53+
def setUp(self):
54+
self.data = {
55+
"name" : "David",
56+
"age" : 26,
57+
"birth_date" : datetime.strptime("10-03-98", "%d-%m-%y").date(),
58+
"programming_languages" : ["Python", "HTML", "CSS"]
59+
}
60+
61+
def test_fields_exist(self):
62+
self.assertIn("name", self.data)
63+
self.assertIn("age", self.data)
64+
self.assertIn("birth_date", self.data)
65+
self.assertIn("programming_languages", self.data)
66+
67+
def test_data_is_correct(self):
68+
self.assertIsInstance(self.data["name"], str)
69+
self.assertIsInstance(self.data["age"], int)
70+
self.assertIsInstance(self.data["birth_date"], date)
71+
self.assertIsInstance(self.data["programming_languages"], list)
72+
73+
unittest.main()
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
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+
21+
from datetime import datetime
22+
23+
now = datetime.now()
24+
birth_date = datetime(1998, 3, 10, 12, 0, 0)
25+
26+
i = now - birth_date
27+
28+
print(f"Tengo {int(i.days / 365)} años.")
29+
30+
#DIFICULTAD EXTRA
31+
32+
print(birth_date.day, birth_date.month, birth_date.year)
33+
print(birth_date.strftime("%d %m %y"))
34+
print(birth_date.hour, birth_date.minute, birth_date.second)
35+
print(birth_date.strftime("%j"))
36+
print(birth_date.strftime("%A"))
37+
print(birth_date.strftime("%h"))
38+
print(birth_date.strftime("%B"))
39+
print(birth_date.strftime("%c"))
40+
print(birth_date.strftime("%x"))
41+
print(birth_date.strftime("%X"))
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
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 datetime
23+
import time
24+
import asyncio
25+
26+
async def task(name: str, duration: int):
27+
28+
print(f"Tarea: {name}. Duración: {duration}s. Inicio: {datetime.datetime.now()}")
29+
await asyncio.sleep(duration)
30+
print(f"Tarea: {name}. Fin: {datetime.datetime.now()}")
31+
32+
asyncio.run(task("1", 2))
33+
34+
#DIFICULTAD EXTRA
35+
36+
async def async_tasks():
37+
await asyncio.gather(task("C", 3), task("B", 2), task("A", 1))
38+
39+
asyncio.run(async_tasks())
40+
asyncio.run(task("D", 1))

0 commit comments

Comments
 (0)