José A. Alonso
Departamento de Ciencias de la Computación e I.A.
Universidad de Sevilla
Sevilla, 23 de agosto de 2019
Nota: La versión interactiva de este tema se encuentra en Binder.
2 * 5 + 6 - (100 + 3)
-87
8/2, 8/4
(4.0, 2.0)
7 // 2, 7 % 2
(3, 1)
2 ** 10
1024
a = 8
b = 2 * a
b
16
a + b
24
a = a + 1
a
9
a, b = 2, 5
a + 2 * b
12
Ejercicio 1. Definir la función suma tal que suma(x, y) es la suma de x e y. . Por ejemplo,
>>> suma(2,3)
5
def suma(x, y):
return x+y
suma(2, 3)
5
Ejercicio 2. Definir el procedimiento suma que lea dos números y escriba su suma. Por ejemplo,
>>> suma()
Escribe el primer número: 2
Escribe el segundo número: 3
La suma es: 5
def suma():
a = eval(input("Escribe el primer número: "))
b = eval(input("Escribe el segundo número: "))
print("La suma es:",a+b)
suma()
La suma es: 5
Ejercicio 3. Definir, usando condicionales, la función maximo tal que maximo(x,y) es el máximo de x e y. Por ejemplo,
>>> maximo(2, 5)
5
>>> maximo(2, 1)
2
def maximo(x, y) :
if x > y:
return x
else:
return y
maximo(2, 5)
5
maximo (2, 1)
2
Ejercicio 4. Definir la función signo tal que signo(x) es el signo de x. Por ejemplo,
>>> signo(5)
1
>>> signo(-7)
- 1
>>> signo(0)
0
def signo(x):
if x > 0:
return 1
elif x < 0:
return -1
else:
return 0
signo(5)
1
signo(-7)
-1
signo(0)
0
Ejercicio 5. Definir, con un bucle while, la función sumaImpares tal que sumaImpares(n) es la suma de los n primeros números impares. Por ejemplo,
>>> sumaImpares(3)
9
>>> sumaImpares(4)
16
def sumaImpares(n):
s, k = 0, 0
while k < n:
s = s + 2*k + 1
k = k + 1
return s
sumaImpares(3)
9
sumaImpares(4)
16
Ejercicio 6. Definir la función mayorExponente tal que mayorExponente(a,n) es el mayor k tal que a^k divide a n. Por ejemplo,
>>> mayorExponente(2,40);
3
def mayorExponente(a, n):
k = 0
while (n % a == 0):
n = n/a
k = k + 1
return k
mayorExponente(2, 40)
3
Ejercicio 7. Definir, por iteración con for, la función fact tal que fact(n) es el factorial de n. Por ejemplo,
>>> fact 4
24
def fact(n):
f = 1
for k in range(1,n+1):
f = f * k
return f
fact(4)
24
Ejercicio 8. Definir, por iteración, la función suma tal que suma(xs) es a suma de los números de la lista xs. Por ejemplo,
>>> suma([3,2,5])
10
def suma(xs):
r = 0
for x in xs:
r = x + r
return r
suma([3, 2, 5])
10
Ejercicio 9. Definir, por recursión, la función fact tal que factR(n) es el factorial de n. Por ejemplo,
>>> fact 4
24
def fact(n):
if n == 0:
return 1
else:
return n * fact(n-1)
fact(4)
24
def tak(x,y,z):
if x <= y:
return y
else:
return tak(tak(x - 1, y, z),
tak(y - 1, z, x),
tak(z - 1, x, y))
Importación de la librería para medir el tiempo.
import time
Primer experimento
tiempo_inicial = time.time()
tak(12,6,1)
print("Tiempo = %s segundos " % (time.time() - tiempo_inicial))
Tiempo = 0.33638763427734375 segundos
Segundo experimento
tiempo_inicial = time.time()
tak(13,6,1)
print("Tiempo = %s segundos " % (time.time() - tiempo_inicial))
Tiempo = 1.9111294746398926 segundos
Tercer experimento
tiempo_inicial = time.time()
tak(14,6,1)
print("Tiempo = %s segundos " % (time.time() - tiempo_inicial))
Tiempo = 11.704586267471313 segundos
Cuarto experimento
tiempo_inicial = time.time()
tak(16,6,1)
print("Tiempo = %s segundos " % (time.time() - tiempo_inicial))
Tiempo = 540.393595457077 segundos