Ejercicios 4

1 Ejercicio

Escribir una función que indique si dos fichas de dominó encajan o no. Las fichas son recibidas en dos tuplas, por ejemplo: (1,3) y (5,3).


In [6]:
# Sol:
x = (3,2)
y = (5,3)
def encaja(x, y):
    if x[0] == y[0]:
        print("Encajan en la posición X[0] Y[0]")
    elif x[0] == y[1]:
        print("Encajan en la posición X[0] Y[1]")
    elif x[1] == y[0]:
        print("Encajan en la posición X[1] Y[0]")
    elif x[1] == y[1]:
        print("Encajan en la posición X[1] Y[1]")
    else:
        print("Las fichas no encajan")
    return
encaja(x,y)


Encajan en la posición X[0] Y[1]

2 Ejercicio

Define la función media para calcular la media aritmética de los elementos de una lista pasada como parámetro.

  1. Utiliza un bucle for para recorrer la lista y calcular la suma de los elementos y el número de elementos.
  2. Inicializa la suma a 0 antes del bucle.
  3. Inicializa el número de elementos a 0 antes del bucle.

(Otra forma: Usando las funciones sum y len).

Nota: Comprueba que se obtienen los siguientes resultados:

  • media(a) = 200.0
  • Si b = [], media(b) = 0

In [29]:
# Sol:
a = list(range(1,400,2))
b = [1,2,4,8,16,32]
def media(a):
    for i in a:
        i = sum(a) / len(a)
    return i
media(a)


Out[29]:
200.0

3 Ejercicio

La función farenToCentig convierte grados Farenheit en grados centígrados.

  • Utiliza la función farenToCentig para generar la siguiente tabla de conversión:

0:º F = -18.0º C 10:º F = -13.0º C 20:º F = -7.0º C ... 100:º F = 37.0º C 110:º F = 43.0º C 120:º F = 48.0º C

Nota:

  • Genera la lista de valores $[0, ... , 120]$ con la función range.
  • Utiliza un bucle for para calcular los grados centígrados de cada elemento de la lista de valores.

In [12]:
# Sol :
F = list(range(0,130,10))
def farenToCentig(F):
    return (F-32)*(5/9)

In [15]:
for i in F:
    cent = farenToCentig(i)
    conversion = round(cent)
    print( '%d ºF = %.1f ºC' % (i,conversion))


0 ºF = -18.0 ºC
10 ºF = -12.0 ºC
20 ºF = -7.0 ºC
30 ºF = -1.0 ºC
40 ºF = 4.0 ºC
50 ºF = 10.0 ºC
60 ºF = 16.0 ºC
70 ºF = 21.0 ºC
80 ºF = 27.0 ºC
90 ºF = 32.0 ºC
100 ºF = 38.0 ºC
110 ºF = 43.0 ºC
120 ºF = 49.0 ºC

4 Ejercicio

Los 15 primeros números triangulares son:

$$ [0, 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, 66, 78, 91, 105] $$
  1. Define una función triang_1 que reciba un número entero positivo $n$ como parámetro y genere la lista de los $n$ primeros números triangulares. Resuelve el problema aplicando la fórmula $a_n = n * (n + 1) / 2$.

  2. Define una función triang_2 que reciba un número entero positivo $n$ como parámetro y genere la lista de los $n$ primeros números triangulares. Resuelve el problema aplicando la fórmula $a_n = a_{n-1} + n$.

  3. Utiliza la función %timeit para medir tiempos y evaluar qué función se comporta mejor.


In [22]:
# Sol: 
def triang_1(n):
    a = []
    for i in range(n):
        an = i * (i + 1 ) / 2
        a.append(an)
    return a
def triang_2(n):
    a = [0]
    for i in range(1,n):
        a.append(a[i-1]+i)
    return a


def triang_3(n):
    return [(i*(i+1)/2) for i in range(n)]


%timeit triang_1(30)
%timeit triang_1(30)
%timeit triang_3(30)


100000 loops, best of 3: 5.9 µs per loop
100000 loops, best of 3: 5.57 µs per loop
100000 loops, best of 3: 3.48 µs per loop