Está en la página 1de 21

UNIVERSIDAD NACIONAL DEL CALLAO

Ciencia y Tecnología rumbo al Tercer Milenio


FACULTAD DE INGENIERIA ELECTRICA Y
ELECTRÓNICA
ESCUELA PROFESIONAL DE INGENIERIA
ELECTRÓNICA

TRABAJO: SESIÓN 13-Programación Avanzada 01L-Problemas


Dirigidos
PROFESOR: Ing. Apaza

CURSO : Programación Avanzada

ALUMNO:

Santillana Garabito Manuel Alexis 1723225087

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:

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:

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:

2. Escribir una clase en python que convierta un número romano en un número


entero

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:

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 validos, pero "[)", "({[)]" y "{{{" son inválidos.

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:

7. Escribir una clase en python que calcule pow(x, n)


x = es la base
n = es el exponente
CODIGO:

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:

8. Escribir una clase en python que revierta una cadena de palabras


Entrada: "Mi Diario Python"
Salida: "Python Diario Mi"
CODIGO:

texto = 'Mi Diario Python'
Revertido= ''.join(reversed(texto))
print(texto)
print(Revertido)

EJECUTANDO:

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.

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:

También podría gustarte