s2Eva_IIT2011_T4 Inscripción universitaria SNNA

Ejercicio: 2Eva_IIT2011_T4 Inscripción universitaria SNNA

Propuesta de solución en Python

# 2Eva_IIT2011_T4 Inscripción universitaria SNNA
import numpy as np

codprovincia = ['Guayas','Manabi']

opcion = '0'
postulante = []
while not(opcion=='7'):
    print('1. Registrar Postulante')
    print('2. Grabar archivo de datos')
    print('3. Abrir archivo de datos')
    print('4. Consulta Día de prueba')
    print('5. Postulantes por provincia')
    print('6. Postulantes por carrera')
    print('7. Salir')

    opcion = input('opcion: ')

    if opcion=='1':
        print('  -- 1. Registrar Postulante')
        cedu = input('cédula: ')
        nomb = input('nombre: ')
        naci = int(input('año nacimiento: '))
        while not(naci>1950):
            print('Su año de nacimiento debe ser >1950')
            naci = int(input('año nacimiento: '))
        prov = input('provincia: ')
        carr = input('carrera: ')

        registro = {'cedula':cedu,
                    'nombre':nomb,
                    'nacimiento':naci,
                    'provincia':prov,
                    'carrera':carr}
        postulante.append(registro)

        print(postulante)
        
    if opcion=='2':
        print('  -- 2. Grabar archivo de datos')
        narchivo = input('nombre del archivo: ')
        narchivo = narchivo + '.txt'

        archivo = open(narchivo,'w')
        n = len(postulante)
        fila = 0
        while not(fila>=n):
            cedu = postulante[fila]['cedula']
            nomb = postulante[fila]['nombre']
            naci = postulante[fila]['nacimiento']
            prov = postulante[fila]['provincia']
            carr = postulante[fila]['carrera']
            linea = cedu+','+nomb+','+str(naci)+','+prov+','+carr+'\n'
            archivo.write(linea)
            fila = fila +1
            
        archivo.close()

    if opcion=='3':
        print('  -- 3. Abrir archivo de datos')
        narchivo = input('nombre del archivo: ')
        narchivo = narchivo + '.txt'

        postulante = []
        archivo = open(narchivo,'r')
        linea = archivo.readline()
        while not(linea==''):
            linea = linea.strip('\n')
            partes = linea.split(',')
            cedu = partes[0]
            nomb = partes[1]
            naci = partes[2]
            prov = partes[3]
            carr = partes[4]
            registro = {'cedula':cedu,
                        'nombre':nomb,
                        'nacimiento':naci,
                        'provincia':prov,
                        'carrera':carr}
            postulante.append(registro) 
            linea = archivo.readline()
        archivo.close()
        n = len(postulante)
        print('registros leidos: ',n)

    if opcion=='4':
        print('  -- 4. Consulta Día de prueba')
        cedu = input('cedula: ')
        diaprueba ='No hay dia para ese digito\n'
        n = len(cedu)
        digito = cedu[n-2]
        if (digito =='1' or digito=='2'):
            diaprueba = 'LUNES'
        if (digito =='3' or digito=='4'):
            diaprueba = 'MARTES'

        print('el dia de su prueba es: ')
        print(digito,diaprueba)

    if opcion == '5':
        print('cuenta postulantes por provincia')
        n = len(postulante)
        m = len(codprovincia)
        contadores = np.zeros(m,dtype=int)
        i = 0
        while not(i>=n):
            origen = postulante[i]['provincia']
            indice = codprovincia.index(origen)
            contadores[indice] = contadores[indice]+1 
            i = i+1

        print(contadores)

    if opcion=='7':
        print('gracias, @espol.edu.ec')

s2Eva_IIT2010_T3 Validar registro de revocatoria en CNE

Ejercicio: 2Eva_IIT2010_T3 Validar registro de revocatoria en CNE

propuesta de solución en Python, contiene tarea.

Ejemplo:

cuantos ciudadanos en padrón: 5
cédula : 3
cédula : 2
cédula : 1
cédula : 4
cédula : 5
cuantos se quejan: 3
cedula: 2
cedula: 2
cedula: 3
los que si votan son: 2
[2 3]
>>> 

Instrucciones:

# 2da Evaluación II Término 2010
# Tema 2. Mostrar valores únicos en vector
# Tema 3. Validar registro de revocatoria en CNE

import numpy as np

def unicos(vector):
    n = len(vector)
    vale = np.ones(n, dtype= int)
    i = 0
    while not(i>=(n-1)): #penultimo
        j = i+1
        while not(j>=n): # ultimo
            if (vector[i] == vector[j]):
                vale[j] = 0
            j = j+1
        i = i+1

    # obtiene los únicos
    sinrepetir =[]
    i = 0
    while not(i>=n):
        if (vale[i] == 1):
            sinrepetir.append(vector[i])
        i= i+1
    sinrepetir = np.array(sinrepetir)
    return(sinrepetir)

def registrados(padron,unicos):
    # PROCEDIMIENTO
    n = len(padron)
    m = len(unicos)

    vale = np.ones(m,dtype=int)
    sivotan = []
    i = 0
    while not(i>=m):
        if not(unicos[i] in padron):
            vale[i] = 0
        if (unicos[i] in padron):
            sivotan.append(unicos[i])
        i = i+1
    sivotan = np.array(sivotan)
    return(sivotan)

# PROGRAMA QUE USA LAS FUNCIONES

# INGRESO
n = int(input('cuantos ciudadanos en padrón: '))
padron = []
i = 0
while not(i>=n):
    cedula = int(input('cédula : '))
    padron.append(cedula)
    i = i+1

m = int(input('cuantos se quejan: '))
sequejan =[]
j = 0
while not(j>=m):
    cedula = int(input('cedula: '))
    sequejan.append(cedula)
    j = j+1

# PROCEDIMIENTO
sinrepetir = unicos(sequejan)
sivotan = registrados(padron,sinrepetir)
k = len(sivotan)

# Tarea: Verificar si llegan al 10% del padrón

# SALIDA
print('los que si votan son:',k)
print(sivotan)

s2Eva_IT2012_T2 Cifrado musical americano

Ejercicio: 2Eva_IT2012_T2 Cifrado musical americano

Propuesta de solución en Python:

# 2da Evaluación I Término 2012
# Tema 2. Cifrado musical americano
# Tarea: implementar sostenido '#'
#        validar que # aplica

def teclanum(cancion):
    n = len(cancion)
    teclado = ' C#D#EF#G#A#B'
    secuencia = '' 
    i=0
    while not(i>=n):
        tecla = cancion[i]
        if (tecla!='#'):
            cual = teclado.find(tecla)
            sigue = ''
            if (i<(n-1)):
                sigue = cancion[i+1]
            if (sigue=='#'):
                cual = cual+1
            secuencia = secuencia + str(cual) + ' '
        i=i+1
    return(secuencia)

# Programa de prueba
cancion = 'EFGGFEDCCDEED'
numeros = teclanum(cancion)
print(numeros)

s2Eva_IT2010_T3 Registrar donantes ONTOT

Ejercicio: 2Eva_IT2010_T3 Registrar donantes ONTOT

Propuesta de solución en Python: py_pdf, también en versión matlab: m_pdf

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2da Evaluación I Término 2010
# Tema 3. Donantes ONTOT
# propuesta solucion: edelros@espol.edu.ec

import numpy
donante=[]

opcion=0
while not(opcion==5):
    print('1. Ingreso de donantes ')
    print('2. Ingresar estado con prueba medica')
    print('3. Consulta por estado de donantes ')
    print('4. Total de donantes/tipo de sangre')
    print('5. Salir')

    opcion=int(input('cual opcion:'))

    if (opcion==1):      
        print('1. Ingreso de donantes ')
        texto=input('nombre: ')
        numero=input('cedula: ')
        numb=int(input('anio nacimiento:'))
        print('(1)O-, (2) O+, (3) A-, (4)A+, (5)B-, (6)B+, (7)AB-, (8)AB+')
        sangre=int(input('tipo sanguineo:'))
        estado=1
        # crea el registro pora un donante
        registro={'nombre':texto,'cedula':numero,
                  'nacim':numb, 'tipos':sangre,
                  'estado':1}
        # añade el registro a la tabla donante
        donante.append(registro)

        
    if (opcion==2):
        print('2. Ingresar estado con prueba medica')
        quien=int(input('cual numero de donante:'))
        cuanto=int(input(' (2) Aceptado , (3) Rechazado :'))
        donante[quien]['estado']=cuanto
        
    if (opcion==3):
        print('3. Consulta por estado de donantes ')
        cual=int(input('cual estado: '))
        fila=0
        # tamanio de la tabla donante
        n=len(donante)
        while not(fila>=n):
            if (cual==donante[fila]['estado']):
                print(donante[fila]['nombre'])
            fila=fila+1
        
    if (opcion==4):
        print('4. Total de donantes/tipo de sangre')
        # No se usará la fila 0 de veces
        veces=numpy.zeros(8+1,dtype=int)
        fila=0
        while (fila<n):
            k=donante[fila]['tipos']
            veces[k]=veces[k]+1
            fila=fila+1
        
        print(veces)
        
    if (opcion==5):
        print(' gracias por usar el software')
        
    if (opcion<1 or opcion>5):
        print('NO ES OPCION DISPONIBLE')

s2Eva_IT2011_T4 Números Romanos a Decimal

Propuesta de solución en Python: py_pdf, también en versión matlab: m_pdf

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2da Evaluación I Término 2011
# Tema 4. romano a decimal
# propuesta: edelros@espol.edu.ec

cadena=input('numero en romano: ')

romano='IVXLCDM'
decimal=[1,5,10,50,100,500,1000]
cadena=cadena.upper()
n=len(cadena)
#cambia a equivalentes decimales
equivale=[]
i=0
while (i<n):
    #busca en romano
    j=0
    while (j<7):
        if (cadena[i]==romano[j]):
            equivale.append(decimal[j])
        j=j+1
    i=i+1
#Revisa signos y acumula
suma=0
i=0
while (i<(n-1)):
    if (equivale[i]<equivale[i+1]):
        equivale[i]=-equivale[i]
    suma=suma+equivale[i]
    i=i+1
suma=suma+equivale[n-1]

print(suma)

s2Eva_IIT2012_T2 Cifrado César

Ejercicio: 2Eva_IIT2012_T2 Cifrado César

Propuesta de solución en Python: py_pdf, también en versión matlab: m_pdf

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2da Evaluación II Término 2012
# Tema 2. Cifrado Cesar
# propuesta: edelros@espol.edu.ec

def cifradocesar(mensaje,llave):
    alfabeto='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    m=len(alfabeto)
    # mensaje en mayusculas
    mensaje=mensaje.upper()
    t=len(mensaje)
    # crear resultado desde primera letra
    resultado=''
    i=0
    while not(i>=t):
        #busca letra en alfabeto
        encontre=-1
        j=0
        while not(j>=m):
            if (mensaje[i]==alfabeto[j]):
                encontre=j
            j=j+1
        # cambia letra de alfabeto con llave
        if (encontre>=0):
            nueva=encontre+llave
            if (nueva>m):
                nueva=nueva-m
            if (nueva<0):
                nueva=nueva+m
            letra=alfabeto[nueva]
        else:
            letra=alfabeto[encontre]
        # añade letra al resultado
        resultado=resultado+letra
        i=i+1
    return(resultado)

s2Eva_IT2011_T4 Números Romanos a decimal

Ejercicio: 2Eva_IT2011_T4 Números Romanos a decimal

Propuesta de solución en Python: python en pdf, también en versión matlab en pdf

# 2da Evaluación I Término 2011
# Tema 4. Convertir Romano a decimal
# propuesta: edelros@espol.edu.ec

import numpy as np

cadena=input('romano a decimal: ')

#Procedimiento
n=len(cadena)
cadena=cadena.upper() # todo en mayuscula

romano='IVXLCDM'
decimal=np.array([1,5,10,50,100,500,1000])

equivale=np.zeros(n,dtype=int)

for i in range(0,n,1):
    # Busca en donde equivale ;repasar numpy.where
    j=0
    donde=-1
    while not(j>=7 or donde>-1):
        if (cadena[i]==romano[j]):
            donde=j
        j=j+1
    #equivale decimal
    equivale[i]=decimal[donde]

# Sumar los datos
suma=0
i=0
while not(i>=(n-1)): #solo hasta penultimo
    signo=1
    if (equivale[i]<equivale[i+1]):
        signo=-1
    suma=suma+signo*equivale[i]
    i=i+1
suma=suma+equivale[n-1] #para el último
    
#salida
print(suma)

Ejemplo:

>>> 
romano a decimal: CLXIII
163
>>> =========== RESTART ==========
>>> 
romano a decimal: CXLIX
149
>>>