s3Eva_IT2015_T1 Maquina con monedas

Ejercicios: 3Eva_IT2015_T1 Maquina con monedas

Video de concepto que incluye el ejercicio:

Literal a:

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IT2015_T1 Maquina con monedas
import numpy as np

# INGRESO
valor = float(input('valor: '))

# PROCEDIMIENTO
centavos = (valor - int(valor))*100
centavos = int(centavos)

cantidad    = np.zeros(4,dtype=int)
cantidad[0] = centavos
numero = int(valor)

i = 1
while not(numero == 0 or i>=4):
    digito = numero%10
    numero = numero//10
    cantidad[i] = digito
    i = i + 1

# SALIDA
print(cantidad)

prueba:

valor: 435.16
[16  5  3  4]
>>> 

tarea: convertir a función

literal b:

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IT2015_T1 Maquina con monedas
import numpy as np

# INGRESO
centavos = int(input('devolver: '))

# PROCEDIMIENTO
monedas = np.array([1,5,10,25,50])
tamano = len(monedas)
devolver = centavos
cantidad = np.zeros(tamano, dtype = int)
i = tamano - 1
while not(i < 0):
    cantidad[i] = devolver//monedas[i]
    devolver = devolver%monedas[i]
    i = i-1

# SALIDA
print(monedas)
print(cantidad)

prueba:

devolver: 63
[ 1  5 10 25 50]
[3 0 1 0 1]
>>> 

tarea: convertir a función

s3Eva_IT2015_T4 Bomberos para incendios forestales

Ejercicios: 3Eva_IT2015_T4 Bomberos para incendios forestales

Propuesta de solución en Python:

Tarea: Desarrollar la opcion 3

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IT2015_T4 Bomberos para incendios forestales
import numpy as np

def grupobombero(registrados, m, local):
    n = len(registrados)
    filas = n//m
    if (n%m>0):
        filas = filas+1
    tabla = np.zeros(shape=(filas,m),dtype = int)
    # Solo bomberos de provincia local
    f = 0
    c = 0
    i = 0
    while not(i>=n):
        cual = registrados[i,1]
        quien = registrados[i,0]
        if (cual == local):
            tabla[f,c] = quien
            c = c+1
            if (c>=m):
                c = 0
                f = f + 1
        i = i + 1
    # los demas bomberos
    i = 0
    while not(i>=n):
        cual = registrados[i,1]
        quien = registrados[i,0]
        if not(cual == local):
            tabla[f,c] = quien
            c = c + 1
            if (c>=m):
                c = 0
                f = f + 1
        i = i + 1
    tabla = np.array(tabla)
    return(tabla)

# 3ra Evaluación I Término 2015
# Tema 4. Bomberos para incendios forestales
presentados = []
tabla  = np.zeros(shape=(1,2),dtype=int)
opcion = -1
i = 1
while not(opcion==6):
    print('1. Registrar bombero')
    print('2. Asignar grupos')
    print('3. Mostrar nombres de un grupo')
    print('4. Guardar datos')
    print('5. Leer datos')
    print('6. Salir')
    opcion = int(input(' opcion: '))

    if (opcion ==1):
        i = len(presentados) + 1
        print('voluntario: ',i)
        
        ced  = input('cedula: ')
        nom  = input('nombre: ')
        nbom = int(input('numero bombero: '))
        prv  = int(input('provincia: '))
        while not(prv>=1 and prv<=24):
            prv = int(input('provincia [1,24]: '))
            
        unbombero = {'cedula':ced,
                     'nombre': nom,
                     'nbombero':nbom,
                     'provincia':prv}
        presentados.append(unbombero)

    if (opcion==2):
        print('asigna grupos.....')
        m = int(input('cuantos grupos/incendios: '))
        local = int(input('ayudar a provincia: '))
        n = len(presentados)
        registrados =[]
        i = 0
        while not(i>=n):
            nbom = presentados[i]['nbombero']
            prv = presentados[i]['provincia']
            registrados.append([nbom,prv])
            i = i + 1
        tabla = grupobombero(registrados, m, local)
        print(tabla)
        
    if (opcion==3):
        print('....3. Mostrar nombres de un grupo')
        # Tarea por desarrollar
            
    if (opcion==4):
        narchivo = 'bomberos.txt'
        archivo = open(narchivo,'w')
        n = len(presentados)
        j =0
        while not(j>=n):
            ced = presentados[j]['cedula']
            nom = presentados[j]['nombre']
            nbom = presentados[j]['nbombero']
            prv = presentados[j]['provincia']
            linea = ced + ',' +nom + ',' + str(nbom) + ',' +str(prv) +'\n'
            archivo.write(linea)
            j = j+1
        archivo.close()
        print('.... registros guardados: ', n)
        
    if (opcion == 5):
        presentados = []
        narchivo = 'bomberos.txt'
        
        archivo = open(narchivo,'r')
        linea = archivo.readline()
        while not(linea==''):
            linea  = linea.strip('\n')
            partes = linea.split(',')
            ced  = partes[0]
            nom  = partes[1]
            nbom = int(partes[2])
            prv  = int(partes[3])
            
            unbombero = {'cedula':ced,
                         'nombre': nom,
                         'nbombero':nbom,
                         'provincia':prv}
            presentados.append(unbombero)
            linea = archivo.readline()

        n = len(presentados)
        print('.... registros leidos: ', n)
        archivo.close()

    if (opcion==6):
        print(' Saliendo del programa ....')
        print(' ccpg1001 Fundamentos de computación .....')

s3Eva_IT2014_T3 Juego Poli-Mancala

Ejercicios: 3Eva_IT2014_T3 Juego Poli-Mancala

Propuesta de solución en Python:

El tema pide realizar el programa usando la función siembra del tema 4. Por lo que la función se califica aparte.

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IT2014_T3 Juego Poli-Mancala
import numpy as np

# funcion siembra del tema 4
def siembra(mancala,jugador,casilla):
    tamano = np.shape(mancala)
    m = tamano[1]
    fila = jugador
    # Selecciona el movimiento del contador
    if (fila == 0):
        mueve = 1
    else:
        mueve = -1

    # Recoge las fichas
    fichas = mancala[fila,casilla]
    mancala[fila,casilla] = 0
    
    # inicia la siembra
    while not(fichas==0):
        casilla = casilla + mueve
        if (casilla>=m):
            casilla = m-1
            fila = 1
            mueve = -1 
        if (casilla<0):
            casilla = 0
            fila = 0
            mueve = 1
        mancala[fila,casilla] = mancala[fila,casilla]+1
        fichas = fichas-1

    return(mancala)

# PROGRAMA PARA EL JUEGO ---------------
# inicializa tablero
mancala = np.ones(shape=(2,8),dtype=int)
mancala = mancala*4
mancala[:,0] = 0
mancala[:,7] = 0
casa1 = 0
casa2 = 0
print('  1 2 3 4 5 6 7 8')
print(mancala)

while not(casa1>24 or casa2>24):
    
    jugador = 1
    print(' Juega 1')
    casilla = input('¿Cual casilla?:')
    while not(casilla>'1' and casilla<'8'):
        casilla = input('¿Cual casilla?:')
    mancala = siembra(mancala,jugador-1, int(casilla)-1)
    print('  1 2 3 4 5 6 7 8')
    print(mancala)

    jugador = 2
    print(' Juega 2')
    casilla = input('¿Cual casilla?:')
    while not(casilla>'1' and casilla<'8'):
        casilla = input('¿Cual casilla?:')
    mancala = siembra(mancala,jugador-1, int(casilla)-1)
    casa1 = mancala[0,0]+mancala[1,0]
    casa2 = mancala[0,7]+mancala[1,7]
    print('  1 2 3 4 5 6 7 8')
    print(mancala)

# Muestra ganadores
if (casa1>casa2):
    print(' Gana Jugador 1')
else:
    print(' Gana Jugador 2')

s3Eva_IT2014_T4 Función siembra

Ejercicios: 3Eva_IT2014_T4 Función siembra

complementa el programa requerido en tema 3

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IT2014_T4 Juego Poli-Mancala
import numpy as np

# funcion siembra
def siembra(mancala,jugador,casilla):
    tamano = np.shape(mancala)
    m = tamano[1]
    fila = jugador
    # Selecciona el movimiento del contador
    if (fila == 0):
        mueve = 1
    else:
        mueve = -1

    # Recoge las fichas
    fichas = mancala[fila,casilla]
    mancala[fila,casilla] = 0
    
    # inicia la siembra
    while not(fichas==0):
        casilla = casilla + mueve
        if (casilla>=m):
            casilla = m-1
            fila = 1
            mueve = -1 
        if (casilla<0):
            casilla = 0
            fila = 0
            mueve = 1
        mancala[fila,casilla] = mancala[fila,casilla]+1
        fichas = fichas-1

    return(mancala)

s3Eva_IIT2013_T4 Gestionar asientos en cine

Ejercicio: 3Eva_IIT2013_T4 Gestionar asientos en cine

Propuesta de solución en Python:

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IIT2013_T4 Gestionar asientos en cine
import numpy as np

# Genera la sala
n = int(input('numero filas: '))
m = int(input('numero columnas:'))
asiento = np.zeros(shape=(n,m), dtype=int)

opcion = '0'
while not(opcion=='5'):
    print(' 1. Vender Boletos')
    print(' 2._Mostrar_asientos')
    print(' 3. Contar vendidos')
    print(' 4. Buscar libre')
    print(' 5. Salir ')

    opcion = input('cual opcion: ')

    if (opcion=='1'):
        print('Vender Boletos')
        fila = int(input('fila:'))
        columna = int(input('columna:'))
        if (asiento[fila,columna]==0):
            asiento[fila,columna] = 1
        else:
            print('asiento ocupado')

        
    if (opcion=='2'):
        print('Mostrar_asientos')
        print(asiento)
        
    if (opcion=='3'):
        print('Contar vendidos')
        contar = 0
        for fila in range(0,n,1):
            for columna in range(0,m,1):
                contar = contar+asiento[fila,columna]
        print(contar)
        
    if (opcion=='4'):
        print('Buscar libre')
        
    if (opcion=='5'):
        print('Salir')

s3Eva_IT2013_T3 Menú de consejerías académicas

Ejercicios: 3Eva_IT2013_T3 Menú de consejerías académicas

Propuesta de solución en Python,  ejercicio iniciado en clase como referencia. Se incluyó grabar los datos en un archivo.

Tarea: continúa ejercicio en la siguiente clase, para las opciones no desarrolladas y la función del tema 2

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IT2013_T3 Menú de consejerías académicas

estudiante = []
opcion = '0'
while not(opcion=='7'):
    print('1. Ingresar datos de estudiante')
    print('2. Ingresar datos de consejero')
    print('3. Sorteo de consejeros/estudiantes')
    print('4. Mostrar lista de estudiantes por consejero')
    print('5. Mostrar consejero de un estudiante')
    print('6. Grabar datos')
    print('7. Salir')

    opcion = input('cual opcion: ')

    if (opcion=='1'):
        # INGRESO
        mtr = input('matricula: ')
        nom = input('nombre: ')
        ema = input('email: ')
        nac = int(input('año nacimiento: '))
        while not(nac>1900 and nac<2018):
            print('usar anos desde el ultimo siglo...')
            nac = int(input('año nacimiento: '))

        unestudiante = {'matricula':mtr,
                        'nombre':nom,
                        'email':ema,
                        'nacimiento':nac}
        estudiante.append(unestudiante)

    if (opcion=='4'):
        print('los estudiantes registrados son: ')
        print(estudiante)

    if (opcion=='6'):
        print('Guardar datos en archivo...')
        narchivo = 'misdatos.txt'

        archivo  = open(narchivo, 'w')
        n = len(estudiante)

        i = 0
        while not(i>=n):
            nom = estudiante[i]['nombre']
            ema = estudiante[i]['email']
            linea = nom +','+ema+ '\n' # str(nac)
            archivo.write(linea)
            i = i + 1

        archivo.close()

s3Eva_IT2013_T2 sorteo de consejeros para estudiantes

Ejercicio: 3Eva_IT2013_T2 sorteo de consejeros para estudiantes

Instrucciones en Python

Propuesta de solución en Python,  ejercicio iniciado en clase como referencia.

# 3Eva_IT2013_T2 sorteo de consejeros para estudiantes
import numpy as np
import random as rnd

# INGRESO
n = int(input('numero de estudiantes: '))
m = int(input('numero de profesores: '))

# PROCEDIMIENTO
consejero = np.zeros(n+1,dtype = int)
contador = np.zeros(m+1,dtype = int)
cupo = n//m
residuo = n%m
i = 1
while not(i>(n-residuo)):
    sorteo = int(rnd.random()*m) + 1
    if (contador[sorteo]<cupo):
        contador[sorteo] = contador[sorteo]+1
        consejero[i] = sorteo
        i = i + 1
cupo = cupo + 1
i = n - residuo + 1
while not(i>n):
    sorteo = int(rnd.random()*m) + 1
    if (contador[sorteo]<cupo):
        contador[sorteo] = contador[sorteo]+1
        consejero[i] = sorteo
        i = i + 1

# SALIDA
print(contador)
print(consejero)

s3Eva_IT2012_T3 Tonalidad de colores en GIF

Ejercicio: 3Eva_IT2012_T3 Tonalidad de colores en GIF

resultados obtenidos

color, frecuencia
0 5
1 0
2 0
...
28 0
29 0
30 10
31 0
32 0
...
78 0
79 0
80 5
81 0
...

Instrucciones en Python

# 3Eva_IT2012_T3 Tonalidad de colores en GIF
import numpy as np

# INGRESO
matriz = np.array([[30, 30, 30, 0, 0],
                   [30, 30, 30, 0, 0],
                   [170, 170, 30, 30, 0],
                   [80, 80, 170, 30, 30],
                   [80, 80, 80, 170, 170]])

# PROCEDIMIENTO
color = np.arange(0,256,1)
frecuencia = np.zeros(256,dtype=int)
tamano = np.shape(matriz)
n = tamano[0]
m = tamano[1]
for i in range(0,n,1):
    for j in range(0,m,1):
        unvalor = matriz[i,j]
        frecuencia[unvalor] = frecuencia[unvalor] + 1

# SALIDA
print('color, frecuencia')
for i in range(0,256,1):
    print(color[i],frecuencia[i])

s3Eva_IT2012_T2 Validar infix y convertir a prefix

Ejercicio: 3Eva_IT2012_T2 Validar infix y convertir a prefix

resultados obtenidos,

>>> in2prefix('2+3')
'+ 2 3'
>>> validainfix('2+3')
True
>>> validainfix('23+')
False
>>> in2prefix('2+3')
'+ 2 3'
>>> 

Instrucciones en Python

# 3Eva_IT2012_T2 Validar infix y convertir a prefix

def validainfix(cadena):
    numero ='0123456789'
    operador ='+-'
    c1 = cadena[0] in numero
    c2 = cadena[2] in numero
    c3 = cadena[1] in operador

    z = 'use 3 dígitos'
    if len(cadena)==3:
        z = c1 and c2 and c3
    return(z)

def in2prefix(cadena):
    z = 'use 3 dígitos'
    condicion = validainfix(cadena)
    if len(cadena)==3 and condicion:
        z = cadena[1]
        z = z+' '+cadena[0]
        z = z+' '+cadena[2]
    return(z)

s3Eva_IIT2012_T1 Alfabeto radiofónico con Python

Ejercicio: 3Eva_IIT2012_T1 Alfabeto radiofónico

Para resolver el ejercicio de alfabeto radiofónico en Python, se propone usar el algoritmo de búsqueda sobre una lista con las parejas [letras,código].

radiofonico = [['A','Alfa'],   ['B','Bravo'],
               ['C','Charlie'],['D','Delta'],
               ['E','Echo'],   ['F','Foxtrot'],
               ['G','Golf'],   ['H','Hotel'],
               ['I','India'],  ['J','Juliet'],
               ['K','Kilo'],   ['L','Lima'],
               ['M','Mike'],   ['N','November'],
               ['O','Oscar'],  ['P','Papa'],
               ['Q','Quebec'], ['R','Romeo'],
               ['S','Sierra'], ['T','Tango'],
               ['U','Uniform'],['V','Victor'],
               ['W','Whiskey'],['X','X-ray'],
               ['Y','Yankee'], ['Z','Zulu']]

Instrucciones en  Python

Para la función coderadio(), la palabra ingresada se convierten todas sus letras a mayúsculas con .upper(), así se facilita la búsqueda sobre la lista radiofónico.

>>> coderadio('ESPOL')
Echo Sierra Papa Oscar Lima

Se aplica el algoritmo de búsqueda  usando cada letra de la palabra sobre cada pareja de lista radiofónico, usando la bandera encontre para salir del bucle de búsqueda. La variable donde indica la posición de coincidencia entre la letra de la palabra y la letra de la lista radiofónico.

El proceso contrario con la función decoradio(), se toma la primera letra de cada palabra de la frase ingresada.

>>> decoradio('Echo Sierra Papa Oscar Lima')
ESPOL

el detalle de instrucciones se presenta a continuación.

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 3Eva_IIT2012_T1 Alfabeto radiofónico
# Tarea: En la segunda función considerar
# que se pueden dar palabras que no son radiofónicas.
#      mejorar la función usando la tabla radiofónico.

def coderadio(palabra,radiofonico):
    # analizar secuencia a codificar
    palabra = palabra.upper()
    frase = '' 

    n = len(palabra)
    i = 0
    while not(i>=n):
        letra = palabra[i]
        
        # Buscar letra en radiofonico
        encontre = 0
        donde    = -1
        m = len(radiofonico)

        j = 0
        while not(j>=m or encontre==1):
            if (letra == radiofonico[j][0]):
                encontre = 1
                donde = j
                equivale = radiofonico[j][1]
            j = j + 1 # busca la siguiente fila

        # completa la frase
        if len(frase)==0:
            espacio = ''
        else:
            espacio = ' '
        frase = frase + espacio + equivale
        
        i = i + 1 # cambia letra de palabra

    return(frase)

def decoradio(frase,radiofonico):
    # Solo un ejemplo para decodificar,
    # Tarea, considerar que pueden enviar 
    #   una palabra que no se encuentra en tabla

    partes = frase.split(' ')
    n = len(partes)
    palabra = ''

    i = 0
    while not(i>=n):
        palabra = palabra + partes[i][0]
        i = i + 1
    return(palabra)

Tarea: Continuar con el tema 2 para crear el menú con las partes para practicar el alfabeto radiofónico.