Está en la página 1de 16

PROGRAMACION AVANZADA

LABORATORIO 91G
ESCOBEDO MEDINA LUIS
COD: 1723225394
PARTE 1:
FUNCIONES EN PYTHON

1. Escribir un función suma () y una función multip() que sumen y multipliquen todos lod 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

CÓDIGO EN PYTHON: EJECUCION O PRUEBA EN CONSOLA:

def suma(lista):
s=0
for i in (lista):
s=s+i
return(s)

print(suma([1,2,3,4]))
def multip(lista):
p=1
for i in (lista):
p=p*i
return(p)
print(multip([1,2,3,4]))

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
CÓDIGO EN PYTHON:
EJECUCION O PRUEBA EN
CONSOLA:

def inversa(palabra):

palabra= "estoy probando"


return (palabra[::-1])

print(inversa(""))

3. Definir una función espalindromo que reconoce palíndromos (es decir, palabras que tienen el mismo
aspecto escritas invertidas), ejemplo espalindromo (" tendría que devolver True.

CÓDIGO EN PYTHON:

EJECUCION O PRUEBA EN CONSOLA:

def espalindromo(palabra):

palabra= "radar" x= (palabra[::-


1]==palabra) return (x)

print(espalindromo(""))

4. Definir una función superposición que tome dos listas y devuelva True si tienen al menos 1 miembro en
común o devuelva False de lo contrario Escribir la función usando el bucle for anidado

CÓDIGO EN PYTHON: EJECUCION O PRUEBA EN CONSOLA:

def superposicion(a,b): for i in


range(len(a)): for j in
range(len(b)): if(a[i] == b[j]):
return (True) else:
return (False) a=[1,2,3,4] b=[8,9,7,5]
print(superposicion(a,b))

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.

CÓDIGO EN PYTHON: EJECUCION O PRUEBA EN CONSOLA:

def generarcaracteres(a, b): c=b for i in


range(a):
b=b+c
return b

print(generarcaracteres(5,"c"))

PARTE 2:
CLASES EN PYTHON:

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

CÓDIGO EN PYTHON:

class Agenda:

def __init__(self):

self.contactos = []

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()

self.menu()

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})

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'])
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

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()

EJECUCION O PRUEBA EN CONSOLA:


2. En un banco tienen clientes que pueden hacer depósitos y extracciones de dinero El banco requiere también
al final del día calcular la cantidad de dinero que se ha depositado Se deberán crear dos clases, la clase
cliente y la clase banco La clase cliente tendrá los atributos nombre y cantidad y los métodos _init_
depositar, extraer, mostrar_total La clase banco tendrá como atributos 3 objetos de la clase cliente y los
métodos init operar y deposito_total.

CÓDIGO EN PYTHON:

class Banco:

def __init__(self):
self.cliente1 = Cliente("Ivan")
self.cliente2 = Cliente("Marcos")
self.cliente3 = Cliente("Juan")

# función para operar


def operacion(self):
self.cliente1.depositar(1000)
self.cliente2.depositar(300) self.cliente3.depositar(43)
self.cliente1.extraer(400)

# función para obtener los depósitos totales


def depositos(self):
total = self.cliente1.devolver_cantidad() + self.cliente2.devolver_cantidad() +
self.cliente3.devolver_cantidad()
print("El total de dinero del banco es: ", total)
self.cliente1.imprimir() self.cliente2.imprimir()
self.cliente3.imprimir()

# creamos la clase Cliente


class Cliente: #
inicializamos def
__init__(self, nombre):
self.nombre = nombre
self.cantidad = 0

# función para depositar dinero


def depositar(self, cantidad):
self.cantidad += cantidad

# función para extraer dinero


def extraer(self, cantidad):
self.cantidad -= cantidad

# función para obtener el total de dinero


def devolver_cantidad(self):
return self.cantidad
# función para imprimir los datos del cliente
def imprimir(self):
print(self.nombre, " tiene depositada una cantidad de ", self.cantidad)

# bloque principal banco1


= Banco()
banco1.operacion()
banco1.depositos()
EJECUCION O PRUEBA EN CONSOLA:

3. Investiga y agrega otro ejemplo de clases:


Escribir una función que simule una calculadora científica que permita calcular el seno, coseno, tangente,
exponencial y logaritmo neperiano. La función preguntará al usuario el valor y la función a aplicar, y
mostrará por pantalla una tabla con los enteros de 1 al valor introducido y el resultado de aplicar la
función a esos enteros.

CÓDIGO EN PYTHON:

from math import sin, cos, tan, exp, log

def apply_function(f, n):

'''

Función que aplica una función a los enteros desde 1 hasta n.

Parámetros:

f: Es una función que recibe un número real y devuelve otro.

n: Es un número entero positivo.

Devuelve:

Un diccionario con los pares i:f(i) para cada valor entero i de 1 a n.

'''

functions = {'sin':sin, 'cos':cos, 'tan':tan, 'exp':exp, 'log':log}

result = {} for i in range(1, n+1):

result[i] = functions[f](i)

return result

def calculator():

'''

Función que aplica una función seleccionada por el usuario (seno, coseno, tangente, exponencial o logarítmo)
a la lista de enteros desde 1 hasta n.

Imprime por pantalla una tabla con la secuencia de enteros y el resultado de aplicarles la función introducida.

Parámetros:

f: Es una cadena con la función a aplicar (sin, cos, tan, exp o log).

n: Es un entero positivo.

'''
f = input('Introduce la función a aplicar (sin, cos, tan, exp, log): ')

n = int(input('Introduce un entero positivo: ')) for i, j in

apply_function(f, n).items():

print (i, '\t', j)


return

calculator()

EJECUCION O PRUEBA EN CONSOLA:

PROBLEMAS DIRIGIDOS

Ejercicio 1 Escribir una clase en Python que convierta un número entero a número romano

CÓDIGO EN PYTHON:

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(125))

Ejercicio 2 Escribir una clase en Python que convierta un número romano en un número entero

CÓDIGO EN PYTHON:

def romano_a_entero(romano):
romanos = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000}
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('MCL'))
Ejercicio 3 Escribir una clase en Python para encontrar la validez de una cadena de paréntesis, '(', ')', '{', '}', '[' '].
Los paréntesis deben aparecer en el orden correcto, por ejemplo "()" y "()[]{}" son válidos, pero "[)", "({[)]" y
"{{{" son inválidos.

CÓDIGO EN PYTHON:

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('((){][}'))

Ejercicio 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]]

CÓDIGO EN PYTHON:

def subconjuntos(numeros):
return subconjuntos_recursivo([], sorted(numeros)) def subconjuntos_recursivo(actual, conjunto): if
conjunto: return subconjuntos_recursivo(actual, conjunto[1:]) + subconjuntos_recursivo(actual +
[conjunto[0]], conjunto[1:]) return [actual] numeros = [4, 5, 6]
resultado = subconjuntos(numeros)
print(len(resultado)) print(resultado)
Ejercicio 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: números= [10,20,10,40,50,60,70],
objetivo=50 Salida: 3, 4

CÓDIGO EN PYTHON:

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,30,40,50,60,70] suma = 50 resultado =
encontrar_indices_suma(numeros, suma)
print(resultado)

Ejercicio 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]]

CÓDIGO EN PYTHON:

from itertools import combinations def


elementos_suma_cero(numeros):
sublistas_tres = list(combinations(numeros, 3))
sublistas = [] for s in sublistas_tres: if sum(s) == 0:
sublistas.append(s) return sublistas
numeros = [-25, -10, -7, -3, 2, 4, 8, 10] resultado =
elementos_suma_cero(numeros) print(resultado)

Ejercicio 7 Escribir una clase en Python que


calcule pow(x, n) x = es la base n = es el exponente
Entrada: pow(2, -3) Salida: 0.125 Entrada: pow(3,
5) Salida: 234

CÓDIGO EN PYTHON:
class Potenciacion: def

__init__(self,base,exponente):

self.base = base self.exponente =

exponente def pow(self):

res=self.base**self.exponente

return res

r=Potenciacion(2,3) print('la

potencia es: ',r.pow())

Ejercicio 8 Escribir una clase en Python que revierta una cadena de palabras Entrada: "Mi Diario Python" Salida:
"Python Diario Mi"

CÓDIGO EN PYTHON:

def invertir_cadena(cadena):

return cadena[::-1]

print(invertir_cadena("Mi diario Python"))

Ejercicio 9 Escribir una clase en Python con 2


métodos: get_string y print_string. get_string acepta una cadena ingresada por el usuario y print_string imprime la
cadena en mayúsculas.

CÓDIGO EN PYTHON:

class Rectangulo:

"""

Define un rectángulo según su base y su altura.

"""

def __init__(self, b, h):

self.b = b

self.h = h def

area(self):

return self.b * self.h

rectangulo = Rectangulo(20, 10)


print("Área del rectángulo: ", rectangulo.area())

Ejercicio 10 Escribir una clase en Python llamada rectángulo que contenga una base y una altura, y que contenga
un método que devuelva el área del rectángulo

CÓDIGO EN PYTHON:
.

class IOString():

def __init__(self):

self.str1 = ""

def get_String(self):

self.str1 = input()

def print_String(self):

print(self.str1.upper())

str1 = IOString() str1.get_String()

str1.print_String()
Ejercicio 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 círculo.

CÓDIGO EN PYTHON:

class Circulo:

def __init__(self,radio,pi):

self.radio = radio

self.pi = pi

def area(self):

res=self.radio**2*self.pi

return res def

perimetro(self):

res= 2*(self.radio*self.pi)

return res r=Circulo(4,3.1415)

print('el area del circulo es: ',r.area()) print('el

perimetro del circulo es: ',r.perimetro())

También podría gustarte