Example #1
0
### C)
Defina la función cambioDeMando, que recibe un **Pais** y el nombre de un presidente, y retorne un Pais con el nuevo nombre del presidente.

### D)
Defina la función cambioDeMandoMut, que recibe un **PaisMut** y el nombre de un presidente y actualiza el nombre del presidente de PaisMut en cuestión. Esta función debe retornar None.

### P2. Convivencia
Cuando acabe la pandemia organizaremos una convivencia del curso. Para esto crearemos un programa que nos permita llevar un registro de los participantes y las cosas que traerá cada uno.

Para resolver el ejercicio, utilice la funcion buscar y las estructuras mutables lista, producto y participante definidas a continuación.
"""

import estructura

# participante: nombre(str) confirmacion(str) nombre_producto(str)
estructura.mutable('participante', 'nombre confirmacion nombre_producto')
# producto: nombre(str) cantidad(int)
estructura.mutable('producto', 'nombre cantidad')
# lista: valor(producto o participante) siguiente(lista)
estructura.mutable('lista', 'valor siguiente')

# buscar: lista(producto o participante ), string -> producto o participante
# Recibe una lista de las estructuras producto o participante y un parámetro nombre.
# Busca el elemento de la lista cuyo atributo nombre sea igual al parámetro nombre.
# Ej:
# producto1 = producto("chips pop", 5)
# producto2 = producto("bebidas", 0)
# L1 = lista(producto1,(lista(producto2, None)))
# buscar(L1, "chips pop")
# assert buscar(L1, "chips pop") == producto1
# -*- coding: utf-8 -*-
"""
Created on Thu Oct 24 17:38:17 2019

@author: Diego Campanini
"""
#%%
import estructura
from lista import *

#%%
estructura.mutable("cartaMutable", "calle ciudad pais")
miCartaMutable = cartaMutable("Lira 123", "Stgo", "Chile")
print
print 'miCartaMutable original= ', miCartaMutable

#%%
miCartaMutable.calle = "Ahumada 222"
print
print 'miCartaMutable mutada= ', miCartaMutable
- Los valores de los campos de la estructura no se pueden modificar

<mark>**Ahora veremos como definir estructuras mutables con el modulo estructura**</mark>
"""

import estructura

estructura.crear("deportista", "nombre deporte") # estructura NO mutable

p = deportista("Michael Jordan", "basquetbol")
print(p.deporte)

p.deporte = "beisbol"

estructura.mutable("deportista", "nombre deporte") # estructura mutable

p = deportista("Michael Jordan", "basquetbol")
print(p.deporte)

p.deporte = "beisbol"
print(p.deporte)

"""## Aliasing"""

import estructura
estructura.mutable("cliente", "nombre saldo")
juan = cliente("Juan", 1000)
pedro = juan
print("El saldo de Juan es", juan.saldo)
            if partidoVotante == k:
                a = a + 1
                break
        for k in tipoB:
            if partidoVotante == k:
                b = b + 1
                break
        if partidoVotante == tipoC[0]:
            c = c + 1

    return [a, b, c]


#%%
#persona: run(str) nombre(str) partido(str)
estructura.mutable('persona', 'run nombre partido')
p1 = persona('12345678-9', 'Juan Perez', 'sp')  #ejemplo
p2 = persona('12345678-9', 'Juan Perez', 'ri')
p3 = persona('12345678-9', 'Juan Perez', 'ev')
p4 = persona('12345678-9', 'Juan Perez', 'pl')
p5 = persona('12345678-9', 'Juan Perez', 'spaaaa')

votantes = [p1, p2, p3, p4, p5]
cantidadVotantes = my_votos_a_imprimir(votantes)


# ===========================================================================
# ===========================================================================
#%% solucion pauta (mas corta, sin los for internos que use)
#votos_a_imprimir: list(persona) -> list(int)
def votos_a_imprimir(votantes):
Example #5
0
import estructura

estructura.mutable("Nodo", "elemento izq der")
L = []


def valido(arbol):
    #no existe un arbol valido con none, en caso de que sea un int
    #se retorna true
    if arbol == None:
        return False
    if type(arbol) != Nodo:
        return False
    s = arbol.elemento
    #chequear si ambos hijos no son none
    if s == "+" or s == "-" or s == "/" or s == "*":
        if arbol.izq == None or arbol.der == None:
            return False
        return valido(arbol.izq) and valido(arbol.der)
    #si es un int retornar true
    if type(s) == int:
        return True
    #si no para ningun test retornar false
    return False


def build():
    global L
    #aqui prueba si es una expresion valida
    if len(L) == 0:
        return
Example #6
0
# coding: utf-8

# Clase Diccionario
#
# Solución utilizando listas (**list**) de Python

import estructura

# Estructura que almacena una palabra con su significado
# registro: palabra (str) significado (str)
estructura.mutable("registro", "palabra significado")


# Clase Diccionario
# Almacena registros de palabras con su significado
# Campos:
#    __D: list (registro)
class Diccionario:
    # __init__ : str -> list(registro)
    #crea diccionario con palabras en archivo x
    #ejs: D=Diccionario("diccionario.txt")
    def __init__(self, x):
        assert type(x) == str
        self.__D = []  #list()
        f = open(x)
        for linea in f:
            i = linea.index(".")
            reg = registro(linea[0:i], linea[i + 1:-1])
            self.__D.append(reg)
        f.close()
Example #7
0
# -*- coding: utf-8 -*-
"""
Created on Wed Oct 30 21:50:22 2019

@author: Diego Campanini
"""
#%%
import estructura 
from lista import *

estructura.mutable('invitado','nombre confirmado')
#%% c3 2015-2 p1 (a)

# funcion para invitar o no a un amigo
def invitar(amigos):
    lista_inv=[]
    for am in amigos:
        r=raw_input('Invitar a '+am+' si o no? ')
        if r=='si':
            inv=invitado(am,False)
            lista_inv=lista_inv+[inv]
    return lista_inv

#%% p1 (b): funcion para que los invitados confirmen
def confirmar(invitados,confirmados):
    for i in range(len(invitados)):
        p=invitados[i]
        if p.nombre in confirmados:
            invitados[i].confirmado=True
    return invitados
Example #8
0
### P1. ONU
La ONU requiere su ayuda manteniendo un registro actualizado de los mandatarios de todos los países del mundo. Para esto desarrollaremos una función que permita cambiar el nombre del presidente de un país.

### A)
Cree la estructura **no mutable** llamada 'Pais' que tenga los atributos nombre, continente y presidente_actual.
"""

import estructura
# Pais: nombre(str) continente(str) nombre_presidente(str)
estructura.crear("Pais", "nombre continente nombre_presidente")
"""### B)
Cree la estructura **mutable** PaisMut con los atributos nombre, continente y presidente_actual.
"""

# PaisMut: nombre(string) continente(string) nombre_presidente(str)
estructura.mutable("PaisMut", "nombre continente nombre_presidente")
"""### C)
Defina la función cambioDeMando, que recibe un **Pais** y el nombre de un presidente, y retorne un Pais con el nuevo nombre del presidente.
"""


#cambioDeMando: Pais, str -> Pais
#Recibe un Pais (pais) y el nombre del nuevo presidente (n),
# y retorna un Pais que cambia el nombre del presidente de pais por el dado como parametro n.
#Ej: cambioDeMando(Pais("EEUU", "America", "Donald Trump "), "Joe Biden") entrega Pais("EEUU", "America", "Joe Biden")
def cambioDeMando(pais, n):
    return Pais(pais.nombre, pais.continente, n)


#test
assert cambioDeMando(Pais("EEUU", "America", "Donald Trump "),
Example #9
0
import estructura
estructura.mutable("registro", "nombre fono")
agenda = [registro("a", 2), registro("c", 1), registro("d", 4)]


#buscar: str list -> int
#buscar nombre en agenda y devolver fono
#(None si no esta)
#ej: buscar("c",agenda)->1
def buscar(nombre, agenda):
    for i in range(len(agenda)):
        if agenda[i].nombre == nombre:
            return i
    return None


assert buscar("c", agenda) == 1