Está en la página 1de 12

CAPITULO 3

Unidad 17
Q1.
Defina una función llamada my_greet que imprima "Bienvenido." y llame esta función para
que imprima el saludo dos veces.
def my_greet(n=1):
return "Bienvendio "*n

my_greet(2)

'Bienvendio Bienvendio '

Q2.
Implemente la función max2(m,n) la cual tome dos parámetros llamados m y n y que
regrese el número mayor de estos dos valores. Por otro lado, implemente la función
min2(m,n) que tome dos parámetros llamados m y n y que regrese el número menor de
estos dos valores. Luego, asigne el valor de 100 y 200 como argumentos para las dos
funciones e imprima su resultado.
def maximo(m,n):
return max(m,n)

def minimo(m,n):
return min(m,n)

print("el maximo de 100 y 200 es:",maximo(100,200))


print("el minimo de 100 y 200 es:",minimo(100,200))

el maximo de 100 y 200 es: 200


el minimo de 100 y 200 es: 100

Q3.
Queremos cambiar el valor de la distancia de millas a kilómetros (Las millas son una
unidad de medida que se usa principalmente en Estados Unidos, mientras que los
kilómetros son la unidad estándar internacional). Para ello implemente la función
mile2km(ml) que toma valores de las millas y las convierta en kilómetros. Luego llame a
esta función para que imprima la conversión de las millas 1 a 5 en kilómetros a través de la
sentencia for. (Se define 1 milla con 1.61 km
def ile2km(ml):
return ml*1.60934
inicio=1
final=5

milla=0
for i in range(inicio,final+1):
milla+=1
print(milla,"millas es igual a {0:0.2f} km". format(ile2km(i)))

1 millas es igual a 1.61 km


2 millas es igual a 3.22 km
3 millas es igual a 4.83 km
4 millas es igual a 6.44 km
5 millas es igual a 8.05 km

Q4.
Implemente la función cel2fah(cel) que toma la temperatura en grados Celsius y que
retorna la temperatura en grados Fahrenheit. Luego llame la función, a través de una
sentencia for, que imprima las conversiones de temperatura desde 10 hasta 50 grados
Celsius en pasos de 10 unidades. (Recuerde la fórmula de conversión Fah = Cel*(9/5) + 32
def cel2fah(cel):
return cel*(9/5)+32

inicio=10
final=50

milla=0
for i in range(inicio,final+1,10):
milla+=10
print(milla,"grados celsius es igual a {0:4.2f} grados
Fahrenheit".format(ile2km(i)))

10 grados celsius es igual a 16.09 grados Fahrenheit


20 grados celsius es igual a 32.19 grados Fahrenheit
30 grados celsius es igual a 48.28 grados Fahrenheit
40 grados celsius es igual a 64.37 grados Fahrenheit
50 grados celsius es igual a 80.47 grados Fahrenheit

Q5.
Permita que un usuario ingrese 3 enteros a, b y c e imprima el valor promedio, el máximo y
el mínimo de estos 3. Para ello, defina y llame las funciones mean3(a, b, c), max3(a, b, c),
min3(a, b, c).
Debes tener una salida similar a la que se muestra a continuación:

num=input("Ingrese tres numeros separados por un espacio:").split(" ")


num_int=[int(x) for x in num]
def mean3(a=1, b=1, c=1):
suma=a+b+c
promedio=suma/len(num)
return promedio

def max3(a, b, c):


return max(a, b, c)

def min3(a, b, c):


return min(a, b, c)

print("el promedio es de:",mean3(num_int[0],num_int[1],num_int[2]))


print("el número maximo es
de:",max3(num_int[0],num_int[1],num_int[2]))
print("el número minimo es",min3(num_int[0],num_int[1],num_int[2]))

Ingrese tres numeros separados por un espacio:9 2 6


el promedio es de: 5.666666666666667
el número maximo es de: 9
el número minimo es 2

Unidad 18
Q1.
Toma un número n como entrada y encuentre su suma desde 1 hasta n. Escriba su función
usando funciones recursivas
n=int(input("Ingrese un número:"))
base={0:0,1:1}

def sumatoria(n):
if n in base:
return base[n]
else:
return n+sumatoria(n-1)

print("la sumatoria de {} es de {}".format(n,sumatoria(n)))

Ingrese un número:10
la sumatoria de 10 es de 55

Q2.
Python tiene el operador ** el cual indica una potencia, Sin embargo, tomemos a x y n como
entradas sin usar ese operador y use una función recursiva que retorne x a la potencia de n.
Luego, calcule 210 poniendo x como 2 y n como 10.
x=int(input("Ingrese un número:"))
n=int(input("Ingrese la potencia:"))
def mul_potencia(base,potencia):
if base==0:
return 0
elif base==1:
return 1
elif potencia==1:
return base
elif potencia==0:
return 1
else:
return base*mul_potencia(base,potencia-1)

print("{} elevado a la potencia {} es:


{}".format(x,n,mul_potencia(x,n)))

Ingrese un número:2
Ingrese la potencia:10
2 elevado a la potencia 10 es: 1024

Q3.
El número natural e, tambien llamado el número de Euler o la constante de Napier, en un
número irracional usado como la base de los logaritmos naturales y es definido con la
siguiente formula:
1 1 1 1
e=1+ + + +. . .+
1! 2 ! 3 ! n!
donde el valor de Euler depende de la cantidad de términos n que se establezcan.
Desarrolle una función recursiva que permita encontrar el valor de euler(20) con 20
términos para encontrar los primeros 5 decimales.
Salida esperada para n=20, es euler(20) = 2.71828
def facto(n):
if n ==0 or n==1:
return 1
else:
return n*facto(n-1)

def eul(n):
if n==0 or n==1:
return 2
else:
return (1/facto(n))+(eul(n-1))

print("el euler de 20 = {0:0.5f}".format(eul(20)))

el euler de 20 = 2.71828
Unidad 19
Q1
Hay una lista de elementos enteros llamada n_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]. Retorne una
lista llamada even_list la cual solo contiene los elementos pares de n_list usando las
funciones filter y lambda.
Para este ejemplo, la respuesta esperada es: even_list = [2, 4, 6, 8, 10].
Pistas: Cree una lista vacía llamada even_list y agregue los items por el método append.
Luego use el ciclo for y la función filter y finalmente, use la función lambda dentro de la
función del filtro.
n_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_list=[]

for i in filter(lambda x:x%2==0,n_list):


even_list.append(i)

print("even_list=",even_list)

even_list= [2, 4, 6, 8, 10]

Q2.
Hay una lista de elementos enteros llamada n_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]. Retorne una
lista llamada even_list la cual solo contiene los elementos pares de n_list usando las
funciones filter y lambda. Sin embargo, en este ejercicio no use el ciclo for y en vez de ello,
use una función list.
Para este ejemplo, la respuesta esperada es: even_list = [2, 4, 6, 8, 10].
Pistas: Modifique los objetos retornados por la función filter a una lista de objetos a través
de la función list y asignelas a la variable even_list.
n_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_list=list(filter(lambda x:x%2==0,n_list))
print("even_list=",even_list)

even_list= [2, 4, 6, 8, 10]

Q3.
Escriba una función map que convierta la variable 'a_list', que contiene el alfabeto en
minúscula ['a', 'b', 'c', 'd'] y lo convierte en la variable 'upper_a_list', que contiene el alfabeto
en mayúscula ['A', 'B', 'C', 'D']. También defina una función llamada to_upper que reciba las
letras en minúsculas como parámetros y las retorne como letras en mayúsculas.
Para este ejemplo, la respuesta esperada es: upper_a_list = ['A', 'B', 'C', 'D']
a_lis=['a', 'b', 'c', 'd']
upper_a_list=list(map(lambda x:x.upper(),a))
print("upper_a_list=",upper_a_list)

upper_a_list= ['H', 'O', 'L', 'A']

Q4.
Calcule la suma de enteros de 1 a 100 usando la función reduce y la expresión lambda
dentro de ella. Use como entrada: range(1, 101).
Para este ejemplo, la respuesta esperada es: "La suma de 1 a 100 es: 5050"
from functools import reduce

numeros=list(range(1,101))
sum_numeros=reduce(lambda x,y:x+y,numeros)
print("La suma de 1 a 100 es de",sum_numeros)

La suma de 1 a 100 es de 5050

Q5.
Tienes disponible la información de los puntajes de los exámenes de los estudiantes en
inglés, matemáticas y ciencias que pueden ser expresados como una lista [100, 90, 95]. Si
hay dos estudiantes, los puntajes se representarían como [100, 90, 95, 90, 85, 93]. Ahora, si
un estudiante no realizó algún examen en particular se marca con el puntaje de 0. Por lo
tanto, se requiere un código que imprima:
• de cuantos estudiantes se tienen los puntajes,
• el número de estudiantes con puntajes válidos (Es decir, que no tienen 0 en alguna
materia),
• y el puntaje de los estudiantes con calificaciones válidas.
Ejemplo de una entrada:
scores = [100, 90, 95, 90, 80, 70, 0, 80, 90, 90, 0, 90, 100, 75, 20, 30, 50, 90]
Ejemplo de salida:
scores = [100, 90, 95, 90, 80, 70, 0, 80, 90, 90, 0, 90, 100, 75, 20, 30, 50, 90]
El número total de estudiantes es 6
El número total de estudiantes válidos es 4
[[100, 90, 95], [90, 80, 70], [100, 75, 20], [30, 50, 90]]
scores = [100, 90, 95, 90, 80, 70, 0, 80, 90, 90, 0, 90, 100, 75, 20,
30, 50, 90]

#1. Se recorta
def recortar(scores,tamaño):
return[scores[i:i+tamaño] for i in range(0,len(scores),tamaño)]
new_scores=recortar(scores,3)

#2. Se filtran los valores validos


validos=[]
for a in filter(lambda x:all(x),new_scores):
validos.append(a)

print(scores)
print("El número total de estudiantes es de",len(new_scores))
print("El número total de estudiantes válidos es",len(validos))
print(validos)

[100, 90, 95, 90, 80, 70, 0, 80, 90, 90, 0, 90, 100, 75, 20, 30, 50,
90]
El número total de estudiantes es de 6
El número total de estudiantes válidos es 4
[[100, 90, 95], [90, 80, 70], [100, 75, 20], [30, 50, 90]]

Unidad 20
Q1.
Cree una función anidada llamando a esta función greetings y otra función llamada say_hi
dentro de esa función. Llame la función say_hi dentro de la función greetings y luego, llame
la función greetings e imprima 'hello'.
Use la siguiente definición para la función say_hi
#funcion aninada
def greeting ():
def say_hi():
print("hello")
say_hi()
return say_hi

greeting()

hello

<function __main__.greeting.<locals>.say_hi()>
Q2. (tiempo estimado: 5 min)
Escriba la siguiente función calc y asigne calc a la variable num. Luego, ejecute num(3), el
resultado debe ser 14.
#funcion clous
def calc():
a = 3
b = 5
def mul_add(x):
return a*x + b
return mul_add

num=calc()
print(num(3))

14

Q3.
Reconstruya la funcion interna mul_add de la función anidada calc del problema anterior
usando la expresion lambda y obtenga el mismo resultado.
#funcion clous
def calc():
a = 3
b = 5

return lambda x:a*x + b


num=calc()
print(num(3))

14

Q4.
Extraiga la lista resultante de la lista lst que tiene valores de 1 a 100. La lista resultante
tiene los elementos de lst que son divisibles por 5 o 7. Para ello declare la función func1(a)
y anide las funciones func2 y func3. Luego llame las dos funciones desde la función func1 e
imprima los números que son divisibles por 5 o 7. Finalmente, alinee los valores
resultantes usando la función pre-construida sorted().
Respuesta esperada:

def func2(a):
result1 = []
for i in a:
if i%5 == 0:
result1.append(i)
return result1
def func3(b):
result2 = []
for j in b:
if j%7 == 0:
result2.append(j)
return result2

def func1(lista):
result=func2(lista)+func3(lista)
return sorted(result)

numeros=list(range(1,101))
print("result =",func1(numeros))

result = [5, 7, 10, 14, 15, 20, 21, 25, 28, 30, 35, 35, 40, 42, 45,
49, 50, 55, 56, 60, 63, 65, 70, 70, 75, 77, 80, 84, 85, 90, 91, 95,
98, 100]

Unidad 21
Q1.
Construya la clase Dog y sus objetos con sus funcionalidades descritas a continuación:
• Tiene un método llamado def bark(self):. Este método imprime un ladrido.
• Genere una instancia llamada 'Dog' y refiera a my_dog con un comando llamado
my_dog = Dog
• Imprima un ladrido con un método llamado my_dog.bark()
Respuesta esperada: 'woof woof'
class Dog:
def bark(self):
print("woof woof")

my_dog=Dog()
my_dog.bark()

woof woof

Q2.
Defina la clase Dog con las funcionalidades descritas a continuación y llam sus métodos e
instancias:
• Esta clase Dog tiene un atributo llamado name
• Tiene un método de inicialización llamado def __ init __ (self, name):. Este metodo
inicializa el nombre de la clase Dog.
• Tiene un método llamado def bark(self). Este método imrpime un ladrido.
• Genere una instancia my_dog que tiene el nombre de 'Bigo' con el comando my_dog
= Dog('Bingo')
• Imprima los siguientes ladridos con el método my_dog.bark()
Respuesta esperada: 'Bingo : woof woof'
class Dog:
def __init__(self,name):
self.name=name

def bark(self):
print(self.name,": woof woof")

my_dog=Dog("Bingo")
my_dog.bark()

Bingo : woof woof

Q3.
Construya la clase Studen que tiene las siguientes funcionalidades:
• Este estudiante toma quices para inglés, matemáticas, ciencias y los puntajes son
dados como entradas. Genere instancias a través del uso de esta clase. Esta clase
tiene los siguientes atributos y acciones

Respuesta esperada:

class estudiante:
def __init__ (self, nombre, ID, ingles=0, matematicas=0,
ciencias=0):
self.nombre = nombre
self.ID = ID
self.ingles = ingles
self.matematicas = matematicas
self.ciencias = ciencias

def __str__(self):
return("Nombre del estudiante: {}, Id del estudiante:{}, Nota
Ingles: {}, Nota Matematicas {}, Nota Ciencias {}".
format(self.nombre, self.ID, self.ingles, self.matematicas,
self.ciencias))
def det_ingles(self, ingles):
if ingles > 0:
self.ingles = ingles

def det_matematicas(self, matematicas):


if matematicas > 0:
self.matematicas = matematicas

def det_ciencias(self, ciencias):


if ciencias > 0:
self.ciencias = ciencias

def get_ID (self):


print("el ID del estudiante es:", self.ID)
return self.ID

def get_nombre (self):


print("el nombre del estudiante es:", self.nombre)
return self.nombre

def get_ingles (self):


print("la nota de ingles del estudiante es:", self.ingles)
return self.ingles

def get_matematicas(self):
print("la nota de matematicas del estudiante es:",
self.matematicas)
return self.matematicas

def get_ciencias (self):


print("la nota de ciencias del estudiante es:", self.ciencias)
return self.ciencias

def get_total_notas(self):
print("las notas del estudiante son: \ningles: {} \
nmatematicas: {} \nciencias: {}".format(self.ingles, self.matematicas,
self.ciencias))

def get_promedio_notas (self):


notas=[self.ingles, self.matematicas, self.ciencias]
promedio=sum(notas)/len(notas)
print("El promedio del estudiante es de:
{0:0.1f}".format(promedio))

nombre1=input("Ingrese el nombre del estudiante: ")


ID1=input("Ingrese el ID del estudiante: ")
ingles=int(input("Ingrese la nota de Ingles: "))
matematicas=int(input("Ingrese la nota de Matematicas: "))
ciencias=int(input("Ingrese la nota de ciencias: "))
estudiante1= estudiante(nombre1,ID1)
estudiante1.det_ingles(ingles)
estudiante1.det_matematicas(matematicas)
estudiante1.det_ciencias(ciencias)

estudiante1.get_nombre()
estudiante1.get_ID()
estudiante1.get_total_notas()
estudiante1.get_promedio_notas()

Ingrese el nombre del estudiante: David Doe


Ingrese el ID del estudiante: 20213093
Ingrese la nota de Ingles: 90
Ingrese la nota de Matematicas: 95
Ingrese la nota de ciencias: 100
el nombre del estudiante es: David Doe
el ID del estudiante es: 20213093
las notas del estudiante son:
ingles: 90
matematicas: 95
ciencias: 100
El promedio del estudiante es de: 95.0

También podría gustarte