Programacion Avanzada Laboratorio Sesion 13 Nombre: Sánchez Quinto Cesar Antonio Codigo: 1723225411 Parte 1: Funciones En Python

  • Uploaded by: Daniel Quesada Bejarano
  • 0
  • 0
  • January 2021
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Programacion Avanzada Laboratorio Sesion 13 Nombre: Sánchez Quinto Cesar Antonio Codigo: 1723225411 Parte 1: Funciones En Python as PDF for free.

More details

  • Words: 1,782
  • Pages: 18
Loading documents preview...
PROGRAMACION AVANZADA LABORATORIO SESION 13 NOMBRE: SÁNCHEZ QUINTO CESAR ANTONIO CODIGO: 1723225411 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 Solución: Código en Python:

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])) EJECUCION O PRUEBA EN CONSOLA:

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 Solución: Código en Python:

def inversa(palabra): palabra= "estoy probando" return (palabra[::-1]) print(inversa("")) EJECUCION O PRUEBA EN CONSOLA:

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. Solución: Código en Python:

def espalindromo(palabra): palabra= "radar" x= (palabra[::-1]==palabra) return (x) print(espalindromo("")) EJECUCION O PRUEBA EN CONSOLA:

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 Solución:

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)) EJECUCION O PRUEBA EN CONSOLA:

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. Solución:

def generarcaracteres(a, b): c = b for i in range(a): b = b + c return b print(generarcaracteres(5,"c"))

EJECUCION O PRUEBA EN CONSOLA:

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 Solución: 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. Solución: 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 programa que carga los datos de un triángulo. Implementar una clase con los métodos para inicializar los atributos, imprimir el valor del lado con un tamaño mayor y el tipo de triángulo que es (equilátero, isósceles o escaleno). Solución

class Triangulo: # inicializamos def inicializar(self): self.lado1 = int(input("Ingrese el valor del primer lado: ")) self.lado2 = int(input("Ingrese el valor del segundo lado: ")) self.lado3 = int(input("Ingrese el valor del tercer lado: ")) # imprimimos

def imprimir(self): print("Los lados del triángulo tienen el valor de") print("Lado 1: ", self.lado1) print("Lado 2: ", self.lado2) print("Lado 3: ", self.lado3) # comprobamos el lado mayor def mayor(self): print("El lado mayor es") if self.lado1 > self.lado2 and self.lado1 > self.lado3: print("Lado 1: ", self.lado1) elif self.lado2 > self.lado3: print("Lado 2: ", self.lado2) else: print("Lado 3: ", self.lado3) def tipo(self): if self.lado1 == self.lado2 and self.lado1 == self.lado3: print("Es un triángulo equilátero") elif self.lado1 != self.lado2 and self.lado1 != self.lado3: print("Es un triángulo escaleno") else: print("Es un triángulo isósceles") figura = Triangulo() figura.inicializar() figura.imprimir() figura.mayor() figura.tipo() EJECUCION O PRUEBA EN CONSOLA:

Problemas dirigidos: 1. Escribir una clase en Python que convierta un número entero a número romano Solución: 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(80)) EJECUCION O PRUEBA EN CONSOLA:

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')) EJECUCION O PRUEBA EN CONSOLA:

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('((){][}')) EJECUCION O PRUEBA EN CONSOLA:

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) EJECUCION O PRUEBA EN CONSOLA:

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)

EJECUCION O PRUEBA EN CONSOLA:

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) EJECUCION O PRUEBA EN CONSOLA:

7. Escribir una clase en python que calcule pow (x, x = es la base n = es el exponente Entrada: pow (2, 3) Salida: 0.125 Entrada: pow (3, 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()) EJECUCION O PRUEBA EN CONSOLA:

8. Escribir una clase en python que revierta una cadena de palabras Entrada: "Mi Diario Salida: "Python Diario Código en Python:

def invertir_cadena(cadena): return cadena[::-1] print(invertir_cadena("Mi diario Python"))

EJECUCION O PRUEBA EN CONSOLA:

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 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() EJECUCION O PRUEBA EN CONSOLA:

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 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(50, 5) print("Área del rectángulo: ", rectangulo.area()) EJECUCION O PRUEBA EN CONSOLA:

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(6,3.1415) print('el area del circulo es: ',r.area()) print('el perimetro del circulo es: ',r.perimetro()) EJECUCION O PRUEBA EN CONSOLA:

Related Documents


More Documents from "mauricio lopez"