s2Eva_IT2006_T3 Encriptar a Morse

Ejercicio: 2Eva_IT2006_T3 Encriptar a Morse

# 2Eva_IT2006_T3 Encriptar a Morse

def morse_numero(numero):
    equivale = [ '-..-' , '..-.' , '..-' , '.-' , '.-..' ,
                 '-..' , '-.-.' , '…-' , '–.-' , '-.' ]

    # separa los digitos
    digitos = []
    while numero>0:
        residuo = numero%10
        cociente = numero//10
        digitos.append(residuo)
        numero = cociente
        
    # equivalente en morse
    m = len(digitos)
    cadena = ""
    j = 0
    while (j<m):
        espacio = ' '
        if j == 0:
            espacio = ''
        cadena = equivale[digitos[j]] + espacio + cadena
        j=j+1
    return (cadena)

def numero_morse(cadena):
    equivale = [ '-..-' , '..-.' , '..-' , '.-' , '.-..' ,
                 '-..' , '-.-.' , '…-' , '–.-' , '-.' ]
    # separa cadena
    partes = cadena.split(' ')
    # construye numero
    numero = 0
    m = len(partes)
    for i in range(0,m,1):
        digito = equivale.index(partes[i])
        numero = numero*10+digito
    
    return(numero)

# Tarea, realizar el menú requerido.

resultado del algoritmo

>>> morse_numero(12)
('..-. ..-',)
>>> numero_morse('..-. ..-')
12
>>> 

s2Eva_IT2006_T2 Simula juego de ruleta, punto y premio

Ejercicio: 2Eva_IT2006_T2 Simula juego de ruleta, punto y premio

resultados del algoritmo

>>> puntoganado(5)
8
>>> 
>>> puntoganado(5)
7
>>> 
>>> puntoganado(5)
9
>>> 
>>> premio(8)
'pluma'
>>> premio(18)
'camiseta'
>>> premio(28)
'camiseta'
>>> premio(78)
'ninguno'
>>> premio(3)
'ninguno'
>>> 

Instrucciones en Python

# 2Eva_IT2006_T2 Juego ruleta, punto y premio
import random as rnd

def puntoganado(escoge):
    ruleta = [2,7,5,9,1,3,8,4]
    m = len(ruleta)
    giro = int(rnd.random()*m)+0
    parada = escoge + giro
    if parada>=m:
        parada = parada-m
    puntos = ruleta[parada]
    return(puntos)

def premio(acumulado):
    producto = 'ninguno'
    if (acumulado>=5 and acumulado<=15):
        producto = 'pluma'
    if (acumulado>=16 and acumulado<=35):
        producto = 'camiseta'
    if (acumulado>=36 and acumulado<=45):
        producto = 'balon del mundial'
    return(producto)

# tarea # programa de prueba

s2Eva_IT2006_T1 Donaciones defensa civil

Ejercicio: 2Eva_IT2006_T1 Donaciones defensa civil

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

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IT2006_T1 Donaciones defensa civil
# Propuesta: edelros@espol.edu.ec
# Nombre Donante, teléfono, Tipo Donación, Cantidad

donacion = []
opcion = 0
while not(opcion==5):
    
    print('1. Registro de donacion')
    print('2. Donantes por tipo')
    print('3. Unidades por tipo')
    print('4. Guardar archivo')
    print('5. Salir')
    
    opcion = int(input('cual opcion: '))

    if (opcion==1):
        print('REGISTRA DONACION')
        nombre   = input('nombre: ')
        telefono = input('telefono: ')
        print(' tipo: 1.alimentos 2.medicina 3.dinero')
        tipo     = int(input('tipo : '))
        cantidad = float(input('cantidad: '))
        donacion.append([nombre,telefono,
                         tipo,cantidad])

    elif (opcion==2):
        print('DONANTES POR TIPO')
        m = len(donacion)
        qalimento = 0
        qmedicina = 0
        qdinero   = 0
        for i in range(0,m,1):
            if (donacion[i][2]==1):
                qalimento = qalimento + 1
            if (donacion[i][2]==2):
                qmedicina = qmedicina + 1
            if (donacion[i][2]==3):
                qdinero = qdinero + 1
        print('donantes alimento: ' + str(qalimento))
        print('donantes medicina: ' + str(qmedicina))
        print('donantes dinero:   ' + str(qdinero))
            
    elif (opcion==3):
        print('UNIDADES POR TIPO')
        m = len(donacion)
        salimento = 0.0
        smedicina = 0.0
        sdinero   = 0.0
        for i in range(0,m,1):
            if (donacion[i][2]==1):
                salimento = salimento+donacion[i][3]
            if (donacion[i][2]==2):
                smedicina = smedicina+donacion[i][3]
            if (donacion[i][2]==3):
                sdinero = sdinero+donacion[i][3]
        print('cantidad de alimento: '+str(salimento))
        print('cantidad medicina: '+str(smedicina))
        print('cantidad dinero:   '+str(sdinero))
        
    elif (opcion==4):
        print('Guardar')
        nombrearchivo = input('nombre archivo: ')
        archivo = open(nombrearchivo+'.txt','w')
        m = len(donacion)
        for i in range(0,m,1):
            registro = str(donacion[i][0])+','+str(donacion[i][1])
            registro = registro + ',' + str(donacion[i][2])
            registro = registro + ',' + str(donacion[i][3])+'\n'
            archivo.write(registro)
        archivo.close()
        
    elif (opcion==5):
        print('Gracias por usar el software')
    else:
        print('** opcion no existe **')

resultado del algoritmo

1. Registro de donacion
2. Donantes por tipo
3. Unidades por tipo
4. Guardar archivo
5. Salir
cual opcion: 1
REGISTRA DONACION
nombre: Juan
telefono: 123
 tipo: 1.alimentos 2.medicina 3.dinero
tipo : 1
cantidad: 30
1. Registro de donacion
2. Donantes por tipo
3. Unidades por tipo
4. Guardar archivo
5. Salir
cual opcion: 2
DONANTES POR TIPO
donantes alimento: 1
donantes medicina: 0
donantes dinero:   0
1. Registro de donacion
2. Donantes por tipo
3. Unidades por tipo
4. Guardar archivo
5. Salir
cual opcion: 3
UNIDADES POR TIPO
cantidad de alimento: 30.0
cantidad medicina: 0.0
cantidad dinero:   0.0
1. Registro de donacion
2. Donantes por tipo
3. Unidades por tipo
4. Guardar archivo
5. Salir
cual opcion: 4
Guardar
nombre archivo: donante
1. Registro de donacion
2. Donantes por tipo
3. Unidades por tipo
4. Guardar archivo
5. Salir
cual opcion: 5
Gracias por usar el software
>>> 

ejercicios resueltos Python 2eva_it2006_t1 pdf

ejercicios resueltos Matlab 2eva_it2006_t1 pdf

s2Eva_IT2005_T4 Registrar mejores calificaciones

Ejercicio: 2Eva_IT2005_T4 Registrar mejores calificaciones

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

Se propone realizar el ejercicio mediante el uso de menú, separando las actividades, permitiendo luego añadir opciones.

Tarea: validar en el ingreso que las notas sean entre 0 y 100, y encontrar los datos de calificación más alta y más baja

Instrucciones en Python

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IT2005_T4 Registrar mejores calificaciones
# propuesta: edelros@espol.edu.ec

# Se usará menú y diccionario para cada registro
# Tarea: opcion 4 con nota mas alta y mas baja
# Tarea: aumentar opciones para grabar o leer archivo
# Tarea: Se puede hacer también con listas y sin menu

lista = []
suma = 0

opcion = '0'
while not(opcion=='5'):
    print('1. Ingresar registro')
    print('2. Ingresar ponderaciones')
    print('3. Calcular calificaciones')
    print('4. Mostrar lista y extremos')
    print('5. Salir')
    
    opcion = input('-cual opcion: ')
    
    if (opcion=='1'):
        print('REGISTRO ******')
        nombre   = input('nombre:  ')
        leccion  = int(input('leccion:  '))
        proyecto = int(input('proyecto: '))
        examen   = int(input('examen:   '))
        estudiante = {'nombre':nombre,
                      'leccion':leccion,
                      'proyecto':proyecto,
                      'examen':examen,
                      'calif':0}
        lista.append(estudiante)
        
    elif (opcion=='2'):
        print('PONDERACION')
        pondlecc = int(input('% leccion:  '))
        pondproy = int(input('% proyecto: '))
        pondexam = int(input('% examen:   '))
        suma = pondlecc + pondproy + pondexam
        while not(suma==100):
            print('ponderación no suma 100')
            pondlecc = int(input('% leccion:  '))
            pondproy = int(input('% proyecto: '))
            pondexam = int(input('% examen:   '))
            suma = pondlecc + pondproy + pondexam
        
    elif (opcion=='3'):
        print('CALCULAR')
        tamano = len(lista)
        if (suma==100):
            for i in range(0,tamano,1):
                suma = lista[i]['leccion']*pondlecc
                suma = suma + lista[i]['proyecto']*pondproy
                suma = suma + lista[i]['examen']*pondexam
                prom = suma/100
                lista[i]['calif'] = prom
            print('Recalculadas las notas, proceder a mostrar')
        else:
            print('** las ponderaciones no son validas **')
            print('** volver a opcion de ponderaciones **')
        
    elif (opcion=='4'):
        print('LISTA')
        tamano = len(lista)
        print('nombre, leccion, proyecto, examen, calif')
        for i in range(0,tamano,1):
            texto = lista[i]['nombre'] + ', ' + str(lista[i]['leccion'])
            texto = texto + ', '+str(lista[i]['proyecto'])
            texto = texto + ', ' + str(lista[i]['examen'])
            texto = texto +', '+str(lista[i]['calif']) 
            print(texto)

    elif (opcion=='5'):
        print('Gracias por usar el software...')

    else:
        print('** NO es una opcion disponible **')

resultado de algoritmo

1. Ingresar registro
2. Ingresar ponderaciones
3. Calcular calificaciones
4. Mostrar lista y extremos
5. Salir
-cual opcion: 1
REGISTRO ******
nombre:  juan
leccion:  50
proyecto: 70
examen:   80
1. Ingresar registro
2. Ingresar ponderaciones
3. Calcular calificaciones
4. Mostrar lista y extremos
5. Salir
-cual opcion: 1
REGISTRO ******
nombre:  Maria
leccion:  70
proyecto: 60
examen:   90
1. Ingresar registro
2. Ingresar ponderaciones
3. Calcular calificaciones
4. Mostrar lista y extremos
5. Salir
-cual opcion: 2
PONDERACION
% leccion:  30
% proyecto: 20
% examen:   50
1. Ingresar registro
2. Ingresar ponderaciones
3. Calcular calificaciones
4. Mostrar lista y extremos
5. Salir
-cual opcion: 3
CALCULAR
Recalculadas las notas, proceder a mostrar
1. Ingresar registro
2. Ingresar ponderaciones
3. Calcular calificaciones
4. Mostrar lista y extremos
5. Salir
-cual opcion: 4
LISTA
nombre, leccion, proyecto, examen, calif
juan, 50, 70, 80, 69.0
Maria, 70, 60, 90, 78.0
1. Ingresar registro
2. Ingresar ponderaciones
3. Calcular calificaciones
4. Mostrar lista y extremos
5. Salir
-cual opcion: 5
Gracias por usar el software...
>>> 

ejercicios resueltos Python final_it2005_t4 pdf

ejercicios resueltos Matlab final_it2005_t4 pdf

s2Eva_IT2005_T3 Adivina palabra (ahorcado)

Ejercicio: 2Eva_IT2005_T3 Adivina palabra (ahorcado)

Instrucciones en Python

# 2Eva_IT2005_T3 Adivina palabra (ahorcado)
# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# propuesta: edelros@espol.edu.ec

def esvocal(letra):
    letra = letra.upper()
    vocal = 'AEIOU'
    tipo = 0
    if letra in vocal:
        tipo = 1
    return(tipo)

# INGRESO
palabra = input('¿Cuál palabra?: ')
m = len(palabra)
while m>9:
    print(' palabra de hasta 9 letras')
    palabra = input('¿Cuál palabra?: ')
    m = len(palabra)

# PROCEDIMIENTO
m = len(palabra)
palabra = palabra.upper()
cadena  = ''
vocal ='AEIOU'
falla = 0

i = 0
while i<m:
    cadena = cadena + str(i+1)
    i = i + 1

# una letra
j = 0
while (j<m) and falla<5:
    letra = palabra[j]
    cual  = esvocal(letra)
    if cual==1:
        pista = ' es vocal'
    else:
        pista = ' es consonante'
    print(cadena)
    print(str(j+1)+pista + ', fallas:'+str(falla))

    unaletra = input('¿cuál letra?: ')
    unaletra = unaletra.upper()

    if unaletra == letra:
        print(' adivinado..!')
        j = j + 1
        nueva = palabra[0:j]+cadena[j:]
        cadena = nueva
    else:
        print(' fallaste, no es la letra..!')
        falla = falla + 1

if falla>=5:
    print(' Fallaste 5 veces, perdiste..!')
else:
    print(' Felicitaciones, ganaste...!!')

Tarea: validar que el ingreso del usuario sea de una sola letra.

resultado del algoritmo

¿Cuál palabra?: conocimiento
 palabra de hasta 9 letras
¿Cuál palabra?: sabiduria
123456789
1 es consonante, fallas:0
¿cuál letra?: s
 adivinado..!
S23456789
2 es vocal, fallas:0
¿cuál letra?: i
 fallaste, no es la letra..!
S23456789
2 es vocal, fallas:1
¿cuál letra?: o
 fallaste, no es la letra..!
S23456789
2 es vocal, fallas:2
¿cuál letra?: a
 adivinado..!
SA3456789
3 es consonante, fallas:2
¿cuál letra?: x
 fallaste, no es la letra..!
SA3456789
3 es consonante, fallas:3
¿cuál letra?: y
 fallaste, no es la letra..!
SA3456789
3 es consonante, fallas:4
¿cuál letra?: z
 fallaste, no es la letra..!
 Fallaste 5 veces, perdiste..!
>>>

s2Eva_IT2005_T2 Calcular potencia recursiva

Ejercicio: 2Eva_IT2005_T2 Calcular potencia recursiva

literal a

Al ejecutar el algoritmo se obtiene:

>>> potenciaR(2,7)
128
>>> potenciaR(2,0)
1
>>> potenciaR(2,8)
256
>>>

literal b

p(2) =  17

Instrucciones en Python

# 2Eva_IT2005_T2 Calcular potencia recursiva

def potenciaR(base,exponente):
    if exponente == 0:
        z = 1
    if exponente == 1:
        z= base
    if exponente>1:
        z = base*potenciaR(base,exponente-1)
    return(z)

# literal b
# INGRESO
a = [1,2,3]
x = 2

# PROCEDIMIENTO
n = len(a)
total = 0
for i in range(0,n,1):
    termino = a[i]*potenciaR(x,i)
    total = total + termino

# SALIDA
print('p('+str(x)+') = ',total)

s2Eva_IT2005_T1 Completar cadena con padright

Ejercicio: 2Eva_IT2005_T1 Completar cadena con padright

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

La solución se simplifica al iniciar el resultado con el “mensaje” dado y a partir del siguiente espacio copiar el carácter tantas veces sea necesario hasta completar el n’esimo espacio.

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IT2005_T1 Completar cadena con padright
# Propuesta: edelros@espol.edu.ec

def padright(mensaje,caracter,n):
    t = len(mensaje)
    z = mensaje
    siguiente = t + 1
    for i in range(siguiente,n,1):
        z = z + caracter
    return (z)

prueba de la función, luego de ejecutar algoritmo

>>> padright('Hola mundo','-',20)
'Hola mundo---------'
>>> 

ejercicios resueltos Python final_it2005_t1 pdf

ejercicios resueltos Matlab final_it2005_t1 pdf

s2Eva_IIT2004_T3 Reciclar vasos

Ejercicio: 2daEva_IIT2004_T3 Reciclar vasos

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

Se requiere usar el concepto de cociente y residuo, pues un vaso reciclado entero se obtiene con 4 vasos. Menos de 4 vasos a reciclar no producen un vaso entero, por lo que no se usan en el proceso y quedan separados como sobrantes a ser acumulados en el próximo ciclo.

Lazo mientras-repita

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IIT2004_T3 Reciclar vasos
# Solucion propuesta para 1ra Eval. sin Funciones

# INGRESO
n = int(input('Cuantos vasos usados:'))
factor = int(input('nuevos/reciclado:'))

# PROCEDIMIENTO
total=0
while (n>=factor):
    reciclado = n//factor
    sobra = n%factor
    total = total + reciclado
    n = reciclado + sobra

# SALIDA
print('total reciclados: ', total)

Lazo repita-hasta

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IIT2004_T3 Reciclar vasos
# Solucion propuesta para 1ra Eval. sin Funciones

# INGRESO
n = int(input('Cuantos vasos usados:'))
factor = int(input('nuevos/reciclado:'))

# PROCEDIMIENTO
total = 0
while not(n<factor):
    reciclado = n//factor
    sobra = n%factor
    total = total + reciclado
    n = reciclado + sobra

# SALIDA
print('total reciclados: ', total)

resultado del algoritmo

Cuantos vasos usados:70
nuevos/reciclado:4
total reciclados:  23
>>>
Cuantos vasos usados:7000
nuevos/reciclado:4
total reciclados:  2333
>>>

Diagrama de Flujo

Reciclar vasos 01

Diagrama de Flujo con Repita-Hasta

ejercicios resueltos Python final_iit2004_t3 pdf

ejercicios resueltos Matlab final_iit2004_t3 pdf

s2Eva_IIT2004_T2 Encuesta miembros de familia

Ejercicio: 2Eva_IIT2004_T2 Encuesta miembros de familia

Resultado obtenido:

vector de frecuencias: 
[0 1 2 0 0 0 1 0 0 0]
el valor mas repetido:  3
la media es:  3.75
>>> 

Instrucciones Python

# 2Eva_IIT2004_T2 Encuesta miembros de familia
import numpy as np

def frecuencia(X,Y):
    n = len(X)
    m = len(Y)
    F = np.zeros(n,dtype=int)
    for i in range(0,m,1):
        undato = Y[i]
        donde = X.index(undato)
        F[donde] = F[donde]+1
    return(F)

def masfrecuente(X,F):
    dondeMax = np.argmax(F)
    masrepetido = X[dondeMax]
    return(masrepetido)

def media_aritmetica(X,F):
    n = len(X)
    m = np.sum(F)
    suma = 0
    for i in range(0,n,1):
        suma = suma +X[i]*F[i]
    media = suma/m
    return(media)

# INGRESO
X = [1,2,3,4,5,6,7,8,9,10]
Y = [2,3,3,7]

# PROCEDIMIENTO
freq = frecuencia(X,Y)
masrepetido = masfrecuente(X,freq)
media = media_aritmetica(X,freq)

# SALIDA
print('vector de frecuencias: ')
print(freq)
print('el valor mas repetido: ',masrepetido)
print('la media es: ', media)