Está en la página 1de 5

ACTIVIDAD 1

Ejercicio 1

Completa la siguiente función para que dado un número de documento nacional de identidad (DNI), se
devuelva una letra. Esta letra se obtiene calculando el resto del DNI entre 23 y a partir de ese valor asignarle
una letra de la siguiente tabla:

RESTO 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
LETRA T R W A G M Y F P D X B N J Z S Q V H L C K E

El valor DNI será un número entero y la letra debe ser una cadena de carateres que contendrá una única
letra en mayúsculas.

OM
def ejercicio_1(dni):
resultado = "TRWAGMYFPDXBNJZSQVHLCKE"[dni % 23]
return resultado

Ejercicio 2

Completa la siguiente función para que dado el precio de un producto, se calcule y se devuelva el precio

.C
total que debe pagar el cliente, es decir, incluyenfo el IVA (21% sobre el precio del producto). El precio
total deberá ser únicamente el valor del precio, es decir, no debe contener el símbolo de la moneda.

def ejercicio_2(precio):
DD
resultado = round(precio * 1.21, 2)
return resultado

Ejercicio 3

Completa la siguiente función para que dado el diámetro de una circunferencia, se calcule el área del círculo
que contiene dicha circunferencia. Como valor de PI se usará 3.1415.
LA

def ejercicio_3(diametro):
resultado = 3.1415 * ((diametro / 2) ** 2)
return resultado
FI

Ejercicio 4

Completar la función para que dado dos números entéros y dos números enteros, se calcula el cociente y el
resto de hacer la división entera entre n y m.


def ejercicio_4(numero1, numero2):


cociente = numero1 // numero2
resto = numero1 % numero2
return cociente, resto

Ejercicio 5

Completar la función para que dado el número de unidades que ha comprado un usuario de 2 productos
diferentes, devolver el peso total del paquete para enviar su compra por mensajería. El peso de cada unidad
del producto1 es de 147 unidades y el peso de cada unidad del producto2 es de 2400 unidades. La función
debe devolver únicamente el peso total.

def ejercicio_5(producto1, producto2):


resultado = (producto1 * 147) + (producto2 * 2400)
return resultado

Este archivo fue descargado de https://filadd.com


ACTIVIDAD 2

Ejercicio 1

Escribe una función llamada ejercicio1 que genere una lista con 15 valores enteros aleatorios que vayan
de 1 a 100. La función debe devolver la lista con todos los valores.

import random as r
def ejercicio1():
lista_salida = []
for i in range(15):
lista_salida.append(r.randint(1, 100))
return lista_salida

OM
Ejercicio 2

Escribe una función llamada ejercicio2 que recibe 2 argumentos: el primero será la lista que hemos
implementado en el Ejercicio 1 y el segundo un número por el que se dividirá cada uno de los elementos
de la lista. El resultado será una nueva lista.

def ejercicio2(lista_entrada, divisor):


lista_salida = []

.C
for i in range(len(lista_entrada)):
lista_salida.append(lista_entrada[i] / divisor)
return lista_salida
DD
Ejercicio 3

Usando funciones anónimas, crea una nueva lista que contenga los valores enteros de cada uno de los
elementos de la lista que devuelve la función implementada en el Ejercicio 2.

ejercicio3 = lambda p : [int(p[i]) for i in range(len(p))]


LA

Ejercicio 4

Implementa una función, llamada ejercicio4, que reciba como argumentos dos números enteros y
devuelva en una tupla los siguientes valores: el factorial del primer argumento y el máximo común
divisor de ambos argumentos.
FI

import math as m
def ejercicio4(numero1, numero2):
factorial = m.factorial(numero1)
mcd = m.gcd(numero1, numero2)
return factorial, mcd


Ejercicio 5

Crea una función ejercicio5 que devuelva una lista con todos los valores contenidos en una lista que se
pasa por argumento pero eliminando los valores repetidos. Prueba el funcionamiento de esta función con
la lista obtenida en el Ejercicio 1.

def ejercicio5(lista_entrada):
lista_salida = []
for i in lista_entrada:
if i not in lista_salida:
lista_salida.append(i)
return lista_salida

Este archivo fue descargado de https://filadd.com


ACTIVIDAD 3

Ejercicio 1

Escribe una clase llamada Numero. Esta clase debe tener una constructora que reciba un número y
almacene ese número en 2 atributos: romano que almacenará el número en el formato de número romanos
como una cadena de caracteres y normal que guardará el número que nos han dado en la constructora.

Ejercicio 2

Crea dos nuevos métodos en la clase Numero. El primer método, llamado imprime() imprime un mensaje
mostrando el valor de ambos atributos; el segundo atributo, suma_romano() tendrá como parámetros una
cadena de caracteres que representará otro número romano y que sumaremos a los atributos que ya
teníamos.

OM
Ejercicio 3

Define una función dentro de la clase Numero que a partir de una cadena de caracteres, devuelve True si
esa cadena de caracteres corresponde con un número romano y falso en caso contrario. Después, modifica
el método para que lance un error en el caso de que el valor que nos pasan por parámetro no se
corresponde con el patrón de un número romano

import re

class Numero:
.C
DD
romano = ""
normal = ""

def __init__(self, normal):


self.romano = Numero.normal_a_romano(normal)
self.normal = normal
LA

def imprime(self):
cadena = ("{} {}")
print(cadena.format(self.normal, self.romano))

def suma_romano(self, romano):


numero_anterior = Numero.romano_a_normal(self.romano)
FI

numero_nuevo = Numero.romano_a_normal(romano)
res = int(numero_anterior) + int(numero_nuevo)
self.romano = Numero.normal_a_romano(res)
self.normal = res

def romano_a_normal(romano):


dic = {"M": 1000, "D": 500, "C": 100, "L": 50, "X": 10, "V":
5, "I": 1}
res = 0
for i in range(0, len(romano)):
if i == 0 or dic[romano[i]] <= dic[romano[i - 1]]:
res += dic[romano[i]]
else:
res += dic[romano[i]] - 2 * dic[romano[i - 1]]
return res

def normal_a_romano(normal):
num = [1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000]
rom = ["I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD",
"D", "CM", "M"]
i = 12
res = ""
while normal:
div = normal // num[i]

Este archivo fue descargado de https://filadd.com


normal %= num[i]
while div:
res += str(rom[i])
div -= 1
i -= 1
return res

def is_romano(self, romano):


patron_romano =
"^M{0,3}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$"
if re.search(patron_romano, romano):
return True
else:
return False

OM
Ejercicio 4

Implementa una clase MejorNumero. Esta clase heredará las propiedades de Numero e incluirá dos
métodos nuevos para restar y multiplicar los atributos recibiendo por parámetro otro número romano.

Ejercicio 5

.C
En la clase MejorNumero, crea un nuevo método que reciba una lista con 3 números romanos. A
continuación, iterando sobre los elementos de la lista llamará a la función suma_romano(). Los posibles
errores se tendrán que gestionar con excepciones para mostrar un mensaje y seguir ejecutando el siguiente
número.
DD
class MejorNumero(Numero):
def __init__(self, normal):
self.romano = Numero.normal_a_romano(normal)
self.normal = Numero.normal

def resta(self, romano):


numero_anterior = Numero.romano_a_normal(self.romano)
LA

numero_nuevo = Numero.romano_a_normal(romano)
res = int(numero_anterior) - int(numero_nuevo)
self.romano = Numero.normal_a_romano(res)
self.normal = res

def multiplica(self, romano):


FI

numero_anterior = Numero.romano_a_normal(self.romano)
numero_nuevo = Numero.romano_a_normal(romano)
res = int(numero_anterior) * int(numero_nuevo)
self.romano = Numero.normal_a_romano(res)
self.normal = res


def iterar(self, lista):


numero_anterior = Numero.romano_a_normal(self.romano)
acumulador = 0
for elemento in lista:
try:
acumulador += Numero.romano_a_normal(elemento)
except TypeError:
print("Ha fallado el número " + str(elemento))
res = numero_anterior + acumulador
self.romano = self.romano = Numero.normal_a_romano(res)
self.normal = res

Este archivo fue descargado de https://filadd.com


ACTIVIDAD 4

Ejercicio 1

Crea una función llamada ejercicio1, que recibe la ruta donde se encuentra un dataset y devuelve una
DataFrame con los datos que hay en el dataset. Para comprobar esta función utiliza el dataset
titanic.csv que se incluye en esta actividad.

import pandas as pd
def ejercicio1(dataset):
return pd.read_csv(dataset)

Ejercicio 2

OM
Crea otra función llamada ejercicio2. Esta función recibe un único argumento que es un dataframe. En
concreto debe recibir el dataframe que se ha obtenido de leer el dataset titanic.csv. Esta función
devolverá otro dataset que incluya únicamente a los pasajeros menores de 35 años y que viajaban en 3ª
clase.

def ejercicio2(dataframe):
filtro = dataframe[(dataframe.Age < 35) & (dataframe.Pclass == 3)]
return filtro

Ejercicio 3

.C
Crea una función llamada ejercicio3, que recibiendo como argumento el dataframe de salida del ejercicio
DD
2, calcule el porcentaje de pasajeros menores de 35 años de 3ª clase que sobrevivieron.

def ejercicio3(dataframe):
total_registros = dataframe.Survived.count()
sobrevivientes = dataframe[(dataframe.Survived ==
1)].Survived.count()
LA

p_sobrevivientes = (sobrevivientes * 100) / total_registros


return p_sobrevivientes

Ejercicio 4

Implementa una función llamada ejercicio4 que recibiendo el dataframe con los datos del Titanic,
FI

devuelva en una tupla el porcentaje de hombres y mujeres que viajaban en el Titanic, redondeados al
segundo decimal.

def ejercicio4(dataframe):
total_registros = dataframe.Survived.count()
n_hombres = dataframe[(dataframe.Sex == "male")].Sex.count()


n_mujeres = dataframe[(dataframe.Sex == "female")].Sex.count()


p_hombres = round((n_hombres * 100) / total_registros, 2)
p_mujeres = round((n_mujeres * 100) / total_registros, 2)
return p_hombres, p_mujeres

Ejercicio 5

Implementa una función llamada ejercicio5 que recibiendo el dataframe con los datos del Titanic,
devuelva en una lista el número de pasajeros que viajaban en 1ª, 2ª y 3ª clase.

def ejercicio5(dataframe):
lista = []
lista.insert(0, dataframe[(dataframe.Pclass == 1)].Pclass.count())
lista.insert(1, dataframe[(dataframe.Pclass == 2)].Pclass.count())
lista.insert(2, dataframe[(dataframe.Pclass == 3)].Pclass.count())
return lista

Este archivo fue descargado de https://filadd.com

También podría gustarte