Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ALUMNO:
BELLAVISTA – CALLAO
2020
PROPLEMAS DIRIGIDOS:
PARTE 1.
1. Escribir una función suma () y una función multip() que sumen y multipliquen
respectivamente todos los números de una lista. Por ejemplo: suma ([1,2,3,4])
debería devolver 10 y multip([1,2,3,4]) debería devolver 24.
CODIGO:
def sumar_lista(lista):
"""
Suma un conjunto de valores en una lista.
"""
suma = 0
for numero in lista:
suma += numero
return suma
numeros = [1, 2, 3, 4, 5]
print(sumar_lista(numeros))
numeros = [1.1, 2.2, 3.3, 4.4, 5.5]
def multiplicar_lista(numeros):
"""
Multiplica un conjunto de valores numéricos.
"""
producto = 1
for numero in numeros:
producto *= numero
return producto
numeros = [1, 2, 3, 4, 5]
print(multiplicar_lista(numeros))
numeros = [1.1, 2.2, 3.3, 4.4, 5.5]
print(multiplicar_lista(numeros))
EJECUTANDO:
2. Definir una función inversa () que calcule la inversión de una cadena. Por
ejemplo, la cadena "estoy probando" debería devolver la cadena "odnaborp
yotse"
CODIGO:
cadena = 'estoy probando'
for i in range(len(cadena) - 1, -1, -1):
print(cadena[i], end='')
print()
print(cadena[::])
EJECUTANDO:
3. Definir una función espalindromo() que reconoce palíndromos (es decir,
palabras que tienen el mismo aspecto escritas invertidas), ejemplo: espalindromo
("radar") tendría que devolver True.
CODIGO:
def es_palindromo(frase):
frase = frase.lower()
frase = frase.replace(' ', '')
longitud = len(frase)
if longitud % 2 == 0:
izquierda = frase[:longitud // 2]
derecha = frase[longitud // 2:]
else:
izquierda = frase[:longitud // 2]
derecha = frase[longitud // 2 + 1:]
return izquierda == derecha[::-1]
print(es_palindromo('1001'))
print(es_palindromo('radar'))
print()
print(es_palindromo('1011'))
print(es_palindromo('python'))
EJECUTANDO:
4.
5. Definir una función generarcaracteres() que tome un entero n y devuelva el
caracter multiplicado por n. Por ejemplo: generarcaracteres(5, "x") debería
devolver "xxxxx".
CODIGO:
def generarcaracteres( n, y):
return(y*n)
n=int(input('ingrese n: '))
y=input('ingrese y: ')
print(generarcaracteres( n, y))
EJECUTANDO:
PROBLEMAS DIRIGIDOS:
1. Diseñar una clase agenda, la cual debe almacenar para cada contacto el nombre,
el teléfono y el email. Además, deberá mostrar un menú con las siguientes
opciones
• Añadir contacto
• Lista de contactos
• Buscar contacto
• Editar contacto
• Cerrar agenda
CODIGO:
# creamos nuestra clase agenda
class Agenda:
# iniciamos nuestra clase
def __init__(self):
# crearemos una lista donde guardaremos los datos de nue
stra agenda
self.contactos=[]
# menu del programa
def menu(self):
print()
menu=[
['Agenda Personal'],
['1. Añadir Contacto',"anadir"],
['2. Lista de contactos'],
['3. Buscar contacto'],
['4. Editar contacto'],
['5. Cerrar agenda']
]
for x in range(6):
print(menu[x][0])
opcion=int(input("Introduzca la opción deseada: "))
if opcion==1:
self.anadir()
elif opcion==2:
self.lista()
elif opcion==3:
self.buscar()
elif opcion==4:
self.editar()
elif opcion==5:
print("Saliendo de la agenda ...")
exit()
# volvemos a llamar al menú
self.menu()
# función para añadir un contacto
def anadir(self):
print("---------------------")
print("Añadir nuevo contacto")
print("---------------------")
nom=input("Introduzca el nombre: ")
telf=int(input("Introduzca el teléfono: "))
email=input("Introduzca el email: ")
self.contactos.append({'nombre':nom,'telf':telf,'email':
email})
# función para imprimir la lista de contactos
# En este caso imprimiremos solo los nombres de los contacto
s
# con ellos podremos buscar luego un contacto
def lista(self):
print("------------------")
print("Lista de contactos")
print("------------------")
if len(self.contactos) == 0:
print("No hay ningún contacto en la agenda")
else:
for x in range(len(self.contactos)):
print(self.contactos[x]['nombre'])
# función para buscar un contacto a través del nombre
def buscar(self):
print("---------------------")
print("Buscador de contactos")
print("---------------------")
nom=input("Introduzca el nombre del contacto: ")
for x in range(len(self.contactos)):
if nom == self.contactos[x]['nombre']:
print("Datos del contacto")
print("Nombre: ",self.contactos[x]['nombre'])
print("Teléfono: ",self.contactos[x]['telf'])
print("E-mail: ",self.contactos[x]['email'])
return x
# función para editar los datos de un contacto
def editar(self):
print("---------------")
print("Editar contacto")
print("---------------")
data=self.buscar()
condition=False
while condition==False:
print("Selecciona que quieres editar: ")
print("1. Nombre")
print("2. Teléfono")
print("3. E-mail")
print("4. Volver")
option=int(input("Introduzca la opción deseada: "))
if option==1:
nom=input("Introduzca el nuevo nombre: ")
self.contactos[data]['nombre']=nom
elif option==2:
telf=input("Introduzca el nuevo teléfono: ")
self.contactos[data]['telf']=telf
elif option==3:
email=input("Introduzca el nuevo email: ")
self.contactos[data]['email']=email
elif option==4:
condition=True
# bloque principal
agenda=Agenda()
agenda.menu()
EJECUTANDO:
class Cliente:
def __init__(self, nombre):
self.nombre = nombre
self.monto = 0
def depositar(self, monto):
self.monto = self.monto+monto
def extraer(self, monto):
self.monto = self.monto-monto
def retornar_monto(self):
return self.monto
def imprimir(self):
print(self.nombre, "tiene depositado la suma de", self.m
onto)
class Banco:
def __init__(self):
self.cliente1 = Cliente("Mechita")
self.cliente2 = Cliente("Carlita")
self.cliente3 = Cliente("Rosita")
def operar(self):
self.cliente1.depositar(150)
self.cliente2.depositar(180)
self.cliente3.depositar(130)
self.cliente3.extraer(160)
def depositos_totales(self):
total = self.cliente1.retornar_monto()
+self.cliente2.retornar_monto() + \
self.cliente3.retornar_monto()
print("El total de dinero del banco es:", total)
self.cliente1.imprimir()
self.cliente2.imprimir()
self.cliente3.imprimir()
# bloque principal
banco1 = Banco()
banco1.operar()
banco1.depositos_totales()
EJECUTANDO:
PROBLEMAS DIRIGIDOS
1. Escribir una clase en python que convierta un número entero a número romano
CODIGO:
def conversion_entero_romano(entero):
numeros = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4
, 1]
numerales = ['M', 'CM', 'D', 'CD', 'C', 'XC', 'L', 'XL', 'X'
, 'IX', 'V', 'IV', 'I']
numeral = ''
i = 0
while entero > 0:
for _ in range(entero // numeros[i]):
numeral += numerales[i]
entero -= numeros[i]
i += 1
return numeral
print(conversion_entero_romano(123)) # 'CXXIII'
EJECUTANDO:
def romano_a_entero(romano):
romanos = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D':
500, 'M': 100}
entero = 0
for i in range(len(romano)):
if i > 0 and romanos[romano[i]] > romanos[romano[i - 1]]
:
entero += romanos[romano[i]] - 2 * romanos[romano[i
- 1]]
else:
entero += romanos[romano[i]]
return entero
print(romano_a_entero('CXXIII')) # 123
EJECUTANDO:
def cadena_parentesis_valida(cadena):
pila = []
parentesis = {'{': '}', '(': ')', '[': ']'}
for c in cadena:
if c in parentesis:
pila.append(c)
elif len(pila) == 0 or c != parentesis[pila.pop()]:
return False
return len(pila) == 0
print(cadena_parentesis_valida('()[]{}'))
print(cadena_parentesis_valida('()[]{}('))
print(cadena_parentesis_valida('((){][}'))
EJECUTANDO:
4. Escribir una clase en python que obtenga todos los posibles subconjuntos únicos
de un conjunto de números enteros distintos.
Entrada: [4, 5, 6]
Salida: [[], [6], [5], [5, 6], [4], [4, 6], [4, 5], [4, 5, 6]]
def subconjuntos(numeros):
return subconjuntos_recursivo([], sorted(numeros))
def subconjuntos_recursivo(actual, conjunto):
if conjunto:
return subconjuntos_recursivo(actual, conjunto[1:]) + su
bconjuntos_recursivo(actual + [conjunto[0]], conjunto[1:])
return [actual]
numeros = [1, 2, 3, 4, 5]
resultado = subconjuntos(numeros)
print(len(resultado)) # 2^n => 2^5 = 32
print(resultado)
EJECUTANDO:
5. Escribir una clase en python que encuentre un par de elementos (índice de los
números) de una matriz dada cuya suma es igual a un número de destino
específico.
Entrada: numeros = [10,20,10,40,50,60,70], objetivo=50
Salida: 3, 4
def encontrar_indices_suma(numeros, suma):
numeros_indices = {}
for i, n in enumerate(numeros):
if suma - n in numeros_indices:
return numeros_indices[suma - n], i
numeros_indices[n] = i
numeros = [10, 20, 10, 40, 50, 60, 70]
suma = 50
resultado = encontrar_indices_suma(numeros, suma)
print(resultado)
EJECUTANDO:
6. Escribir una clase en python que encuentre los 3 elementos que sumen 0 a partir
de números reales
Entrada: [-25, -10, -7, -3, 2, 4, 8, 10]
Salida: [[-10, 2, 8], [-7, -3, 10]]
CODIGO:
class Find(object):
def __init__(self, list_Enter):
self.listEnter = list_Enter
self.listOut = []
def set_Zero(self):
for i in range(len(self.listEnter)):
j = i + 1
for j in range(j, len(self.listEnter)):
k = j + 1
for k in range(k, len(self.listEnter)):
if (self.listEnter[i] + self.listEnter[j] +
self.listEnter[k] == 0):
self.listOut.append(
[self.listEnter[i], self.listEnter[j
], self.listEnter[k]])
def get_Zero(self):
return self.listOut
def __str__(self):
return "{0}".format(self.listOut)
sum_Zero = property(get_Zero, set_Zero)
if __name__ == '__main__':
f = Find([-25, -10, -7, -3, 2, 4, 8, 10])
f.set_Zero()
print("Para obtener 0: ", f.get_Zero())
EJECUTANDO:
class Pow(object):
def __init__(self, x, n):
self.x = x
self.n = n
def findPow(self):
self.ans = (self.x ** self.n)
def __str__(self):
return "Entrada: ({0}, {1}). Salida: {2}.".format(self.x
, self.n, self.ans)
if __name__ == '__main__':
p = Pow(2, -3)
p.findPow()
print(str(p))
EJECUTANDO:
texto = 'Mi Diario Python'
Revertido= ''.join(reversed(texto))
print(texto)
print(Revertido)
EJECUTANDO:
10. Escribir una clase en python llamada rectangulo que contenga una base y una
altura, y que contenga un método que devuelva el área del rectángulo.
CODIGO:
class Rectangulo:
def __init__(self, ancho, alto):
self.ancho = ancho
self.alto = alto
def area(self):
resultado = self.ancho*self.alto
return resultado
r = Rectangulo(9, 12)
print('Area del rectangulo: %.2f' % r.area())
EJECUTANDO:
11. Escribir una clase en python llamada circulo que contenga un radio, con un
método que devuelva el área y otro que devuelva el perímetro del circulo.
CODIGO:
from math import pi
class Circulo:
def __init__(self, radio):
self.radio = radio
def area(self):
resultado = pi*self.radio**2
return resultado
def perimetro(self):
resultado = 2*pi*self.radio
return resultado
c = Circulo(8)
print('Area del circulo: %.2f' % c.area())
print('Perimetro del circulo: %.2f' % c.perimetro())
EJECUTANDO: