10 💡 Solución Ejercicios
10.1 Nomenclatura
Ejercicio 01
Escriba un programa que pida al usuario que escriba su nombre, y lo salude llamándolo por su nombre.
Ingrese su nombre: Python
Hola, Python
Ejercicio 02
Escriba un programa que reciba como entrada el radio de un círculo y entregue como salida su perímetro y su área:
Ingrese el radio: 5
Perimetro: 31.4
Área: 78.5
Ejercicio 03
Escriba un programa que calcule el promedio de 4 notas ingresadas por el usuario:
Primera nota: 55
Segunda nota: 71
Tercera nota: 46
Cuarta nota: 87
El promedio es: 64.75
Ejercicio 04
Escriba un programa que convierta de centímetros a pulgadas. Una pulgada es igual a 2.54 centímetros.
Ingrese longitud: 45
45 cm = 17.7165 in
Ejercicio 05
Escriba un programa que reciba como entrada las longitudes de los dos catetos \(a\) y \(b\) de un triángulo rectángulo, y que entregue como salida el largo de la hipotenusa \(c\) del triangulo, dado por el teorema de Pitágoras: \(c^2=a^2+b^2\).
Ingrese cateto a: 7
Ingrese cateto b: 5
La hipotenusa es 8.6023252670426267
Ejercicio 06
Escriba un programa que pregunte al usuario la hora actual \(t\) del reloj y un número entero de horas \(h\), que indique qué hora marcará el reloj dentro de \(h\) horas:
Hora actual: 23
Cantidad de horas: 5
En 5 horas, el reloj marcara las 4
Ejercicio 07
Un alumno desea saber que nota necesita en el tercer certamen para aprobar un ramo.
El promedio del ramo se calcula con la siguiente formula.
\[N_C=(C_1+C_2+C_3)/3\] \[ N_F=N_C⋅0.7+N_L⋅0.3\]
Donde \(N_C\) es el promedio de certámenes, \(N_L\) el promedio de laboratorio y \(N_F\) la nota final.
Escriba un programa que pregunte al usuario las notas de los dos primeros certamen y la nota de laboratorio, y muestre la nota que necesita el alumno para aprobar el ramo con nota final 60.
Ingrese nota certamen 1: 45
Ingrese nota certamen 2: 55
Ingrese nota laboratorio: 65
Necesita nota 74 en el certamen 3
Ejercicio 08
Realice un programa que calcule el área de un triángulo a partir de las longitudes de sus lados.
Para calcularlo puede utilizar la fórmula de Herón:
\[ A = \sqrt{s\,(s-a)(s-b)(s-c)}, \] donde \(a\), \(b\) y \(c\) son las longitudes de cada lado y \(s=\dfrac{a+b+c}{2}\) es el semiperímetro.
Ingrese longitud de lado 1: 3
Ingrese longitud de lado 2: 4
Ingrese longitud de lado 3: 5
El área del triángulo es 6.0
10.2 Control de Flujo
10.2.1 if-elif-else
Ejercicio 01
Escriba un programa que determine si el número entero ingresado por el usuario es par o no.
Ingrese un número: 4
Su número es par
Ingrese un número: 3
Su número es impar
Ejercicio 02
Escriba un programa que pida dos números enteros y que calcule la división, indicando si la división es exacta o no.
Dividendo: 14
Divisor: 5
La división no es exacta.
Cociente: 2
Resto: 4
Ejercicio 03
Escriba un programa que pida al usuario dos palabras, y que indique cuál de ellas es la más larga y por cuántas letras lo es.
Palabra 1: edificio
Palabra 2: tren
La palabra edificio tiene 4 letras mas que tren.
Palabra 1: sol
Palabra 2: paralelepipedo
La palabra paralelepipedo tiene 11 letras mas que sol
Palabra 1: plancha
Palabra 2: lapices
Las dos palabras tienen el mismo largo
Ejercicio 04
Un año es bisiesto si es divisible por \(4\), excepto si es divisible por \(100\) y no por \(400\). Escriba un programa que reciba un año como entrada e indique True
si un año es bisiesto o False
si no lo es.
Ingrese un anno: 1988
1988 es bisiesto
Ingrese un anno: 2011
2011 no es bisiesto
Ingrese un anno: 1700
1700 no es bisiesto
Ingrese un anno: 2400
2400 es bisiesto
Ejercicio 05
Los tres lados \(a, b\) y \(c\) de un triángulo deben satisfacer la desigualdad triangular: cada uno de los lados no puede ser más largo que la suma de los otros dos.
Escriba un programa que reciba como entrada los tres lados de un triángulo, e indique:
- si acaso el triángulo es inválido
- si el triángulo es válido, qué tipo de triángulo es.
Ingrese a: 3.9
Ingrese b: 6.0
Ingrese c: 1.2
No es un triangulo valido.
Ingrese a: 1.9
Ingrese b: 2
Ingrese c: 2
El triangulo es isoceles.
Ingrese a: 3.0
Ingrese b: 5.0
Ingrese c: 4.0
El triangulo es escaleno.
Ingrese a: 2
Ingrese b: 2
Ingrese c: 2
El triangulo es equilatero.
Ejercicio 06
El riesgo de que una persona sufra enfermedades coronarias depende de su edad y su índice de masa corporal:
edad < 45 | edad ≥ 45 | |
---|---|---|
IMC < 22.0 | bajo | medio |
IMC ≥ 22.0 | medio | alto |
El índice de masa corporal es el cuociente entre el peso del individuo en kilos y el cuadrado de su estatura en metros ($IMC = $).
Escriba un programa que reciba como entrada la estatura, el peso y la edad de una persona, y le entregue su condición de riesgo.
ejemplos
- Si el usuario ingresa una estatura de 1.75 metros, un peso de 70 kilogramos y una edad de 30 años, el programa mostrará: “La condición de riesgo es: medio”.
- Si el usuario ingresa una estatura de 1.65 metros, un peso de 90 kilogramos y una edad de 50 años, el programa mostrará: “La condición de riesgo es: alto”.
Ejercicio 07
Un número natural es un palíndromo si se lee igual de izquierda a derecha y de derecha a izquierda.
Por ejemplo, \(14941\) es un palíndromo, mientras que \(81924\) no lo es.
Escriba un programa que indique si el número ingresado es o no palíndromo:
Ingrese un numero: 14941
14941 es palindromo
Ingrese un numero: 81924
81924 no es palindromo
Hint: Para encontrar el inverso de un string en Python, puedes utilizar la técnica de
texto[::-1]
.
10.2.2 While
Ejercicio 01
Solicita al usuario un número y muestra un contador regresivo desde ese número hasta 1. Utiliza la declaración while
para resolver este problema.
Ingrese un número: 5
Contador regresivo desde 5 hasta 1:
5
4
3
2
1
Ejercicio 02
Solicita al usuario un número y calcula la suma de todos los números pares desde 2 hasta ese número. Utiliza la declaración while
para resolver este problema.
Ingrese un número: 10
La suma de números pares desde 2 hasta 10 es 30
Ejercicio 03
Solicita al usuario un número entero y suma todos sus dígitos. Utiliza la declaración while
para resolver este problema.
Ingrese un número entero: 12345
La suma de los dígitos es 15
Ejercicio 04
Pide al usuario un número y cuenta cuántos de sus dígitos son pares. Utiliza la declaración while
para resolver este problema.
Ingrese un número: 123456
El número tiene 3 dígitos pares.
Ejercicio 05
Solicita al usuario un número y cuenta cuántos números en el rango de 1 a ese número son divisibles por 7. Utiliza la declaración while
para resolver este problema.
Ingrese un número: 20
Hay 2 números divisibles por 7 en el rango de 1 a 20.
Ejercicio 06
Solicita al usuario un número y cuenta cuántos de sus dígitos son impares. Utiliza la declaración while
para resolver este problema.
Ingrese un número: 7654321
El número tiene 4 dígitos impares.
10.2.3 Range
Ejercicio 01
Calcula la suma de todos los números pares desde 1 hasta un número dado (\(n\)). Utiliza la declaración range
para resolver este problema.
Ingrese un número: 10
La suma de números pares desde 1 hasta 10 es 30
Ejercicio 02
Muestra un contador regresivo desde un número (\(n\)) dado hasta 1. Utiliza la declaración range
para resolver este problema.
Ingrese un número: 5
Contador regresivo desde 5 hasta 1:
5
4
3
2
1
Ejercicio 03
Muestra la tabla de multiplicar de un número dado. Utiliza la declaración range
para resolver este problema.
Ingrese un número: 7
Tabla de multiplicar del 7:
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63
7 x 10 = 70
Ejercicio 04
Escribe un programa que solicite al usuario un número entero positivo y luego calcule la suma de los cuadrados de todos los números desde 1 hasta el número ingresado. Utiliza la declaración range
para generar los números en el rango y luego suma los cuadrados de esos números.
Ejemplos
Si el usuario ingresa el número 4, el programa calculará la suma de los cuadrados de los números desde 1 hasta 4 de la siguiente manera:
Suma = \(1^2 + 2^2 + 3^2 + 4^2 = 1 + 4 + 9 + 16 = 30\)
El programa mostrará: “La suma de los cuadrados de los números en el rango de 1 a 4 es 30.”
10.2.4 Break & Continue
Ejercicio 01
Solicita al usuario un número y cuenta cuántos de sus dígitos son pares. Utiliza la declaración continue
para omitir los dígitos impares.
Ingrese un número: 123456
El número tiene 3 dígitos pares.
Ejercicio 02
Calcula la suma de los números en un rango dado (por ejemplo, de 1 a 10), pero omite los múltiplos de 3 utilizando la declaración continue
.
Ingrese un número: 10
La suma de los números no divisibles por 3 en el rango de 1 a 10 es 37
Ejercicio 03
Dada una lista de números enteros, solicita al usuario un número objetivo y busca si el número está en la lista. Utiliza un bucle con break
para detener la búsqueda una vez que encuentres el número o determines que no está en la lista.
Ejercicio 04
Simula un juego en el que la computadora “piensa” en un número y el jugador intenta adivinarlo. Crea un bucle que permita al jugador hacer intentos para adivinar el número, y utiliza break
para salir del bucle si el jugador adivina el número o excede un número máximo de intentos.
10.3 Estructura de Datos
10.3.1 Listas
Ejercicio 01
Considere las siguientes listas:
Sin usar el computador, indique cuál es el resultado y el tipo de las siguientes expresiones. A continuación, verifique sus respuestas en el computador.
Respuestas y verificaciones en el computador para las expresiones dadas:
a[2]
: Resultado:4
, Tipo:int
b[9]
: Resultado:29
, Tipo:int
c[1][2]
: Resultado:5
, Tipo:int
e[0] == e[1]
: Resultado:False
, Tipo:bool
len(c)
: Resultado:3
, Tipo:int
len(c[0])
: Resultado:2
, Tipo:int
len(e)
: Resultado:3
, Tipo:int
c[-1]
: Resultado:[6, 7]
, Tipo:list
c[-1][+1]
: Resultado:7
, Tipo:int
c[2:] + d[2:]
: Resultado:[[6, 7], 'jirafa', 'elefante']
, Tipo:list
a[3:10]
: Resultado:[9, 0]
, Tipo:list
a[3:10:2]
: Resultado:[9]
, Tipo:list
d.index('jirafa')
: Resultado:2
, Tipo:int
e[c[0][1]].count(5)
: Resultado:0
, Tipo:int
sorted(a)[2]
: Resultado:4
, Tipo:int
complex(b[0], b[1])
: Resultado:(3+4j)
, Tipo:complex
Ejercicio 02
Escriba una rutina que cuente cuántos valores en la lista valores son mayores que x
:
>>> numero = 5
>>> lista = [7, 3, 6, 0, 4, 5, 10]
Existen 3 numeros mayores que 5 en la lista.
Ejercicio 03
El producto interno de dos listas de números es la suma de los productos de los términos correspondientes de ambas.
Por ejemplo, si:
a = [5, 1, 6]
b = [1, -2, 8]
entonces el producto interno entre \(a\) y \(b\) es:
(5 * 1) + (1 * -2) + (6 * 8)
Escriba una rutina que entregue el producto interno de
a
yb
:>>> a = [7, 1, 4, 9, 8] >>> b = range(5) El producto interno es 68
Dos listas de números son ortogonales si su producto interno es cero. Escriba una rutina que indique si
a
yb
son ortogonales:>>> a = [2, 1] >>> b = [-3, 6] Los vectores son ortonormales
producto interno
vectores ortonormales
10.3.2 Tuplas
Ejercicio 01
Considere las siguientes asignaciones:
Sin usar el computador, indique cuál es el resultado y el tipo de las siguientes expresiones. A continuación, verifique sus respuestas en el computador.
Respuestas y verificaciones en el computador para las expresiones dadas:
a < b
: Resultado:True
, Tipo:bool
y + w
: Resultado:12
, Tipo:int
x + a
: Esto generará un error porque no se pueden sumar una tupla(x)
y una tupla(a)
.len(v)
: Resultado:2
, Tipo:int
v[1][1]
: Esto generará un error porque estás tratando de acceder a un índice en una tupla(a)
que está dentro de otra tupla(v)
.c[0][0]
: Resultado:'D'
, Tipo:str
z, y
: Resultado:(27, 9)
, Tipo:tuple
a + b[1:5]
: Resultado:(2, 10, 1991, 12, 1990)
, Tipo:tuple
(a + b)[1:5]
: Resultado:(10, 1991, 12, 1990)
, Tipo:tuple
str(a[2]) + str(b[2])
: Resultado:'19911990'
, Tipo:str
str(a[2] + b[2])
: Resultado:'3981'
, Tipo:str
str((a + b)[2])
: Resultado:'1991'
, Tipo:str
str(a + b)[2]
: Resultado:'('
, Tipo:str
10.3.3 Conjuntos
Ejercicio 01
Considere las siguientes asignaciones:
Sin usar el computador, indique cuál es el resultado y el tipo de las siguientes expresiones. A continuación, verifique sus respuestas en el computador.
Respuestas y verificaciones en el computador para las expresiones dadas:
len(c)
: Resultado:5
, Tipo:int
len(set(d))
: Resultado:6
, Tipo:int
a & (b | c)
: Resultado:{1, 3, 5}
, Tipo:set
(a & b) | c
: Resultado:{1, 2, 3, 4, 5, 6, 7, 8, 9}
, Tipo:set
c - a
: Resultado:{1, 6, 8, 7}
, Tipo:set
max(e)
: Resultado:(4, 5)
, Tipo:tuple
f[0] < a
: Resultado:True
, Tipo:bool
set(range(4)) & a
: Resultado:{2, 3}
, Tipo:set
(set(range(4)) & a) in f
: Resultado:True
, Tipo:bool
len(set('perro'))
: Resultado:4
, Tipo:int
len({'perro'})
: Resultado:1
, Tipo:int
10.3.4 Diccionarios
Ejercicio 01
Considere las siguientes asignaciones:
Sin usar el computador, indique cuál es el resultado y el tipo de las siguientes expresiones. A continuación, verifique sus respuestas en el computador.
Respuestas y verificaciones en el computador para las expresiones dadas:
Aquí tienes las respuestas y verificaciones en el computador para las expresiones dadas:
a['c']
: Resultado:88
, Tipo:int
a[23]
: Resultado:KeyError
, Tipo:Error
b[-2] or b[55]
: Resultado:False
, Tipo:bool
23 in a
: Resultado:False
, Tipo:bool
'a' in a
: Resultado:True
, Tipo:bool
5 in d[5]
: Resultado:True
, Tipo:bool
sum(b)
: Resultado:65
, Tipo:int
len(c)
: Resultado:0
, Tipo:int
len(d)
: Resultado:3
, Tipo:int
len(d[1])
: Resultado:3
, Tipo:int
len(b.values())
: Resultado:3
, Tipo:int
len(e)
: Resultado:4
, Tipo:int
sum(a.values())
: Resultado:125
, Tipo:int
max(list(e))
: Resultado:10
, Tipo:int
d[1] + d[5] + d[10]
: Resultado:[2, 3, 4, 6, 7, 8, 9, 11]
, Tipo:list
10.4 Funciones
Ejercicio 01
Escriba una función que se llame saludar
que reciba como input un string s y devuelva como output “Hola + valor de s”. * Ejemplo: saludar(“mundo”) = “Hola mundo”
Ejercicio 02
Escriba una función que se llame es_par
que reciba como input un número entero n y devuelva como output True si el número es par, y False en otro caso.
- Ejemplo:
- es_par(4) = True
- es_par(3) = False
Ejercicio 03
Escriba la función invertir_digitos(n)
que reciba un número entero n y entregue como resultado el número n
con los dígitos en el orden inverso:
>>> invertir_digitos(142)
241
A continuación, escriba un programa que indique si el número ingresado es palíndromo o no, usando la función invertir_digitos
:
Ingrese n: 81418
Es palíndromo
Ejercicio 04
Muchos de estos programas sólo tenían pequeñas diferencias entre ellos, por lo que había que repetir mucho código al escribirlos. En este ejercicio, usted deberá implementar algunos de esos programas como funciones, reutilizando componentes para evitar escribir código repetido.
Ejercicio 041
Escriba la función es_divisible(n, d)
que indique si n
es divisible por d
:
>>> es_divisible(15, 5)
True
>>> es_divisible(15, 6)
False
Ejercicio 042
Usando la función es_divisible, escriba una función es_primo(n)
que determine si un número es primo o no:
>>> es_primo(17)
True
>>> es_primo(221)
False
Ejercicio 043
Usando la función es_primo
, escriba la función i_esimo_primo(i)
que entregue el i-ésimo número primo.
>>> i_esimo_primo(1)
2
>>> i_esimo_primo(20)
71
Ejercicio 044
Usando las funciones anteriores, escriba la función primeros_primos(m)
que entregue una lista de los primeros m números primos:
>>> primeros_primos(10)
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
Ejercicio 045
Usando las funciones anteriores, escriba la función primos_hasta(m)
que entregue una lista de los primos menores o iguales que m
:
>>> primos_hasta(19)
[2, 3, 5, 7, 11, 13, 17, 19]
Ejercicio 046
Un primo de Mersenne es un número primo de la forma \(2p−1\). Una propiedad conocida de los primos de Mersenne es que \(p\) debe ser también un número primo.
Escriba la función mersenne
que pregunte al usuario un número \(n\), y muestre como salida los primeros n
primos de Mersenne:
>>> mersenne(5)
3
7
31
127
8191
Ejercicio 05
La suma natural de los primeros n números naturales esta dado por: \[\displaystyle S = \sum_{k=1}^{n} k = 1 +2 +3 +...+n = \dfrac{n(n+1)}{2} \]
Escriba una función que se llame suma_numeros_naturales
que reciba como input un número entero n y devuelva como output la suma de los primeros n números naturales.
Para esto:
- Programe la función ocupando la fórmula manual: \(S = 1+2+3+..+n\)
- Programe la función ocupando la fórmula cerrada: $S = $
Ejemplo: * suma_numeros_naturales(1) = 1 * suma_numeros_naturales(10) = 55 * suma_numeros_naturales(100) = 5050
Ejercicio 06
En los siglos XVII y XVIII, James Gregory y Gottfried Leibniz descubrieron una serie infinita que sirve para calcular \(\pi\):
\[\displaystyle \pi = 4 \sum_{k=1}^{\infty}\dfrac{(-1)^{k+1}}{2k-1} = 4(1-\dfrac{1}{3}+\dfrac{1}{5}-\dfrac{1}{7} + ...) \]
Desarolle un programa para estimar el valor de \(\pi\) ocupando el método de Leibniz, donde la entrada del programa debe ser un número entero \(n\) que indique cuántos términos de la suma se utilizará.
- Ejemplo:
- calcular_pi(3) = 3.466666666666667
- calcular_pi(1000) = 3.140592653839794
Ejercicio 07
Euler realizó varios aportes en relación a \(e\), pero no fue hasta 1748 cuando publicó su Introductio in analysin infinitorum que dio un tratamiento definitivo a las ideas sobre \(e\). Allí mostró que:
En los siglos XVII y XVIII, James Gregory y Gottfried Leibniz descubrieron una serie infinita que sirve para calcular π:
\[\displaystyle e = \sum_{k=0}^{\infty}\dfrac{1}{k!} = 1+\dfrac{1}{2!}+\dfrac{1}{3!}+\dfrac{1}{4!} + ... \]
Desarolle un programa para estimar el valor de \(e\) ocupando el método de Euler, donde la entrada del programa debe ser un número entero \(n\) que indique cuántos términos de la suma se utilizará.
Para esto:
- Defina la función
factorial
, donde la entrada sea un número natural \(n\) y la salida sea el factorial de dicho número.
- Ejemplo: factorial(3) =3, factorial(5) = 120
- Defina la función
- Ocupe la función
factorial
dentro de la funcióncalcular_e
.
- Ejemplo: calcular_e(3) = 2.6666666666666665, calcular_e(1000) = 2.7182818284590455
- Ocupe la función
Ejercicio 08
Sea \(\sigma(n)\) definido como la suma de los divisores propios de \(n\) (números menores que n que se dividen en \(n\)).
Los números amigos son enteros positivos \(n_1\) y \(n_2\) tales que la suma de los divisores propios de uno es igual al otro número y viceversa, es decir, \(\sigma(n_1)=\sigma(n_2)\) y \(\sigma(n_2)=\sigma(n_1)\).
Por ejemplo, los números 220 y 284 son números amigos. * los divisores propios de 220 son 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 y 110; por lo tanto \(\sigma(220) = 284\). * los divisores propios de 284 son 1, 2, 4, 71 y 142; entonces \(\sigma(284) = 220\).
Implemente una función llamada amigos
cuyo input sean dos números naturales \(n_1\) y \(n_2\), cuyo output sea verifique si los números son amigos o no.
Para esto:
- Defina la función
divisores_propios
, donde la entrada sea un número natural \(n\) y la salida sea una lista con los divisores propios de dicho número.
- Ejemplo: divisores_propios(220) = [1, 2, 4, 5, 10, 11, 20, 22, 44, 55 y 110], divisores_propios(284) = [1, 2, 4, 71 y 142]
- Defina la función
- Ocupe la función
divisores_propios
dentro de la funciónamigos
.
- Ejemplo: amigos(220,284) = True, amigos(6,5) = False
- Ocupe la función
Ejercicio 09
La conjetura de Collatz, conocida también como conjetura \(3n+1\) o conjetura de Ulam (entre otros nombres), fue enunciada por el matemático Lothar Collatz en 1937, y a la fecha no se ha resuelto.
Sea la siguiente operación, aplicable a cualquier número entero positivo: * Si el número es par, se divide entre 2. * Si el número es impar, se multiplica por 3 y se suma 1.
La conjetura dice que siempre alcanzaremos el 1 (y por tanto el ciclo 4, 2, 1) para cualquier número con el que comencemos.
Implemente una función llamada collatz
cuyo input sea un número natural positivo \(N\) y como output devulva la secuencia de números hasta llegar a 1.
- Ejemplo: collatz(9) = [9, 28, 14, 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]
Ejercicio 10
La conjetura de Goldbach es uno de los problemas abiertos más antiguos en matemáticas. Concretamente, G.H. Hardy, en 1921, en su famoso discurso pronunciado en la Sociedad Matemática de Copenhague, comentó que probablemente la conjetura de Goldbach no es solo uno de los problemas no resueltos más difíciles de la teoría de números, sino de todas las matemáticas. Su enunciado es el siguiente:
Todo número par mayor que 2 puede escribirse como suma de dos números primos - Christian Goldbach (1742)
Implemente una función llamada goldbach
cuyo input sea un número natural positivo \(n\) y como output devuelva la suma de dos primos (\(n_1\) y \(n_2\)) tal que: \(n_1+n_2=n\).
Para esto:
- Defina la función
es_primo
, donde la entrada sea un número natural \(n\) y la salida sea True si el número es primo y False en otro caso.
- Ejemplo: es_primo(3) = True, es_primo(4) = False
- Defina la función
- Defina la función
lista_de_primos
, donde la entrada sea un número natural par \(n\) mayor que dos y la salida sea una lista con todos los número primos entre 2 y \(n\).
- Ejemplo: lista_de_primos(4) = [2,3], lista_de_primos(6) = [2,3,5], lista_de_primos(8) = [2,3,5,7]
- Defina la función
- Ocupe la función
lista_de_primos
dentro de la funcióngoldbash
.
- Ocupe la función
- Ejemplo: goldbash(4) = (2,2), goldbash(6) = (3,3) , goldbash(8) = (3,5)
Ejercicio 11
El producto interno de dos listas de números es la suma de los productos de los términos correspondientes de ambas.
Por ejemplo, si:
a = [5, 1, 6]
b = [1, -2, 8]
entonces el producto interno entre \(a\) y \(b\) es:
(5 * 1) + (1 * -2) + (6 * 8)
Escriba la función
producto_interno(a, b)
que entregue el producto interno dea
yb
:>>> a = [7, 1, 4, 9, 8] >>> b = range(5) >>> producto_interno(a, b) 68
Dos listas de números son ortogonales si su producto interno es cero. Escriba la función
son_ortogonales(a, b)
que indique sia
yb
son ortogonales:>>> son_ortogonales([2, 1], [-3, 6]) True
Ejercicio 12
Una fecha puede ser representada como una tupla (anno, mes, dia)
.
Escriba la función
dia_siguiente(f)
que reciba como parámetro una fechaf
y entegue cuál es la fecha siguiente:>>> dia_siguiente((2011, 4, 11)) (2011, 4, 12) >>> dia_siguiente((2011, 4, 30)) (2011, 5, 1) >>> dia_siguiente((2011, 12, 31)) (2012, 1, 1)
Como recomendación, dentro de su función use una lista con la cantidad de días que tiene cada mes:
dias_mes = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
Escriba la función
dias_entre(f1, f2)
que retorne la cantidad de días que han transcurrido entre las fechasf1
yf2
:>>> hoy = (2011, 4, 11) >>> navidad = (2011, 12, 25) >>> dias_entre(hoy, navidad) 258 >>> dias_entre(hoy, hoy) 0
Ejercicio 13
El conjunto potencia de un conjunto \(S\) es el conjunto de todos los subconjuntos de \(S\).
Por ejemplo, el conjunto potencia de \(\{1,2,3\}\) es:
\[\{\emptyset,\{1\},\{2\},\{3\},\{1,2\},\{1,3\},\{2,3\},\{1,2,3\}\}\]
En Python, un conjunto no puede contener a otros conjuntos, ya que no puede tener elementos mutables, y los conjuntos lo son:
Lo que sí podemos crear es una lista de conjuntos:
Escriba la función conjunto_potencia(s)
que reciba como parámetro un conjunto cualquiera s
y retorne su «lista potencia» (la lista de todos sus subconjuntos):
Ejercicio 14
Para este ejercicio considere lo siguiente:
Para obtener la lista de palabras de la oración, puede usar el método split
de los strings:
Para obtener un string en minúsculas, puede usar el método lower:
Escriba la función
contar_letras(oracion)
que retorne un diccionario asociando a cada letra la cantidad de veces que aparece en la oracion:>>> contar_letras('El elefante avanza hacia Asia') {'a': 8, 'c': 1, 'e': 4, 'f': 1, 'h': 1, 'i': 2, 'l': 2, 'n': 2, 's': 1, 't': 1, 'v': 1, 'z': 1}
Cada valor del diccionario debe considerar tanto las apariciones en mayúscula como en minúscula de la letra correspondiente. Los espacios deben ser ignorados.
Escriba la función
contar_vocales(oracion)
que retorne un diccionario asociando a cada vocal la cantidad de veces que aparece en la oracion. Si una vocal no aparece en la oración, de todos modos debe estar en el diccionario asociada al valor 0:>>> contar_vocales('El elefante avanza hacia Asia') {'a': 8, 'e': 4, 'i': 2, 'o': 0, 'u': 0}
Escriba la función
contar_iniciales(oracion)
que retorne un diccionario asociando a cada letra la cantidad de veces que aparece al principio de una palabra:>>> contar_iniciales('El elefante avanza hacia Asia') {'e': 2, 'h': 1, 'a': 2} >>> contar_iniciales('Varias vacas vuelan sobre Venezuela') {'s': 1', 'v': 4}
Escriba la función
obtener_largo_palabras(oracion)
que retorne un diccionario asociando a cada palabra su cantidad de letras:>>> obtener_largo_palabras('el gato y el pato son amigos') {'el': 2, 'son': 3, 'gato': 4, 'y': 1, 'amigos': 6, 'pato': 4}
Escriba la función
contar_palabras(oracion)
que retorne un diccionario asociando a cada palabra la cantidad de veces que aparece en la oración:>>> contar_palabras('El sobre esta sobre el pupitre') {'sobre': 2, 'pupitre': 1, 'el': 2, 'esta': 1}
Escriba la función
palabras_repetidas(oracion)
que retorne una lista con las palabras que están repetidas:>>> palabras_repetidas('El partido termino cero a cero') ['cero'] >>> palabras_repetidas('El sobre esta sobre el mueble') ['el', 'sobre'] >>> palabras_repetidas('Ay, ahi no hay pan') []