s2Eva_IIT2008_T2 Etiquetar a robots (R2D2)

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 2008
# Tema 2. Nrobot
# Propuesta: edelros@espol.edu.ec

import random

def nrobot(n):
    # Referencias para seleccionar simbolos
    letra='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    numero='0123456789'

    # formar cadena
    z=''
    i=1
    letravocal=1
    while (i<=n):
        if letravocal==1:
            a=int(random.random()*26)
            z=z+letra[a]
            letravocal=0
        else:
            a=int(random.random()*10)
            z=z+numero[a]
            letravocal=1
        i=i+1
    return z

s2Eva_IIT2009_T3 Controlar saldos prepago

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 2009
# Tema 3. Controlar saldos prepago
# Propuesta: edelros@espol.edu.ec
# Registrar números de celular con listas

celular=[]
saldo=[]
mensajes=[]

opcion=0
while not(opcion==4):
    print('1. Ingresar equipo')
    print('2. Recargar saldo')
    print('3. transferir saldo')
    print('4. Salir')
    opcion=int(input('cual opcion: '))
    
    if (opcion==1):
        print('INGRESAR equipo')
        numero=input('numero celular:')
        celular.append(numero)
        saldo.append(0)
        mensajes.append(0)
        m=len(saldo)-1
        print(str(celular[m])+' '+str(saldo[m])+' '+str(mensajes[m]))

    elif (opcion==2):
        print('RECARGAR')
        numero=input('numero celular: ')
        cantidad=input('    cantidad: ')
        # Busca el numero de celular
        m=len(saldo)
        encontre=-1
        i=0
        while (i<m and encontre==-1):
            if (celular[i]==numero):
                encontre=i
            i=i+1
        # si lo encuentra aumenta el saldo
        if (encontre>=0):
            saldo[encontre]=int(saldo[encontre])+int(cantidad)
            print(encontre)
            print(str(celular[encontre])+' '+str(saldo[encontre])+' '+str(mensajes[encontre]))
        else:
            print('numero no registrado')
            
    elif (opcion==3):
        print('TRANSFERIR')
        donante=input('numero donante : ')
        receptor=input('numero receptor:')
        cantidad=input('       cantidad: ')
        # Busca el numero de celular donante
        m=len(saldo)
        encontreA=-1
        i=0
        while (i<m and encontreA==-1):
            if (celular[i]==donante):
                encontreA=i
            i=i+1
        # Busca el numero de celular receptor
        m=len(saldo)
        encontreB=-1
        i=0
        while (i<m and encontreB==-1):
            if (celular[i]==receptor):
                encontreB=i
            i=i+1
        #revisa condiciones para transferir
        if (encontreA>=0 and encontreB>=0 and int(saldo[encontreA])>=int(cantidad)):
            saldo[encontreA]=int(saldo[encontreA])-int(cantidad)
            saldo[encontreB]=int(saldo[encontreB])+int(cantidad)
            print('saldo transferido: '+str(cantidad))
        else:
            if (encontreA==-1):
                print('no existe registro de donante:')
            if (encontreB==-1):
                print('no existe registro de receptor:')
        
    elif (opcion==4):
        print('Gracias por usar el software')
    else:
        print('opción no disponible..!')
    

s2Eva_IT2007_T1 Funciones par e impar recursivas

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

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2da Evaluación I Término 2007
# Tema 1. Función Impar recursiva
# Propuesta: edelros@espol.edu.ec

import random

def impar(n):
    if (n==0):
        z=0
    if (n>0):
        z= par(n-1)
    return z

def par(n):
    if (n==0):
        z=1
    if (n>0):
        z= impar(n-1)
    return z


# Par/Impar Recursiva Programa

n=int(input('cuantos números?: '))

c=0
i=1
while not(i>n):
    a=int(random.random()*41)+10
    r=par(a)
    if (r==1):
        c=c+1
    i=i+1
if (c>(n/2)):
    z=1
else:
    z=0

print(' El resultado de mayoría pares es: ')
print(z)

s2Eva_IIT2007_T4 Fibonacci recursiva

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 2007
# Tema 4. Fibonacci recursiva
# Propuesta: edelros@espol.edu.ec

def fibo(i):
    if (i==1) or (i==2):
        z=1
    if i>2:
        z=fibo(i-1)+fibo(i-2)
    return z

# 2da Evaluación II Término 2007
# T4. Fibonacci recursiva. Programa
# Propuesta: edelros@espol.edu.ec

m=int(input('valor acumulado?:'))

s=0
i=1
while (s<=m):
    s=s+fibo(i)
    i=i+1

print('total de terminos:')
print(i)
print('total acumulado:')
print(s)

s2Eva_IT2009_T3 Mejores vendedores por categoría

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 2009
# Tema 3. Mejores vendedores
# Propuesta: edelros@espol.edu.ec

import numpy

n=int(input('cuantos vendedores: '))
m=int(input('cuantos productos: '))
ventas=numpy.zeros(shape=(n+1,m+1),dtype=int)
precio=numpy.zeros(shape=(m+1),dtype=float)
for f in range(1,n+1,1):
    for c in range(1,m+1,1):
        ventas[f,c]=int(input('ventas['+str(f)+','+str(c)+']: '))
for pd in range(1,m+1,1):
    precio[pd]=float(input('Precio['+str(pd)+']: '))

# PROCEDIMIENTO
#categoria ventas
unidades=numpy.zeros(shape=(n+1),dtype=int)
for f in range(1,n+1,1):
    for c in range(1,m+1,1):
        unidades[f]=unidades[f]+ventas[f,c]
mventas=1
for f in range(1,n+1,1):
    if unidades[f]>unidades[mventas]:
        mventas=f
# categoria montos
monto=numpy.zeros(shape=(n+1),dtype=float)
for f in range(1,n+1,1):
    for c in range(1,m+1,1):
        monto[f]=monto[f]+ventas[f,c]*precio[c]
mmonto=1
for f in range(2,n+1,1):
    if monto[f]>monto[mmonto]:
        mmonto=f

# Salida
print('Mejor vendedor/unidades')
print(mventas)
print('Mejor vendedor/monto')
print(mmonto)

s2Eva_IIT2008_T3 Crear un Calendario

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 2008
# Tema 3. calendario
# Propuesta: edelros@espol.edu.ec

import numpy

dprimer=int(input('¿dí­a de inicio del mes?: '))
diasmes=int(input('¿dí­as del mes?: '))

# El calendario vacío al inicio
calendario=numpy.zeros(shape=(6,7),dtype=int)
c=dprimer-1
f=0
dia=1
while (f<=5 and dia<=diasmes):
    while (c<=6 and dia<=diasmes):
        calendario[f,c]=dia
        dia=dia+1
        c=c+1
    f=f+1
    c=0

print('   D  L  M  M  J  V  S')
print(calendario)
# Tarea: Validar que el primer día del mes sea entre 1 y 7, 
# y que el número de días del mes se encuentre entre 28 y 31

s2Eva_IT2008_T2 Validar cédula ecuatoriana

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 2008.
# Tema 2. Validar cedula ecuatoriana
# Propuesta de solución: edelros@espol.edu.ec

def vcedula(texto):
    nocero=texto.strip("0")
    cedula=int(nocero,0)
    verificador=cedula%10
    n=cedula//10
    s=0
    while (n>0):
        impar=n%10
        n=n//10
        impar=2*impar
        if (impar>9):
            impar=impar-9
        par=n%10
        n=n//10
        s=s+impar+par
    ds=s//10+1
    s=ds*10-s
    if (s>=10):
        s=s-10
    if (s==verificador):
        z=1
    else:
        z=0
    return z

s2Eva_IIT2009_T1 Mensaje a SMS

Propuesta de solución en Python:

Ejemplo, solo para 'de'-'d':
>>> mensaje='un estudiante de la espol que estudia'
>>> txtsms(mensaje)
'un estudiante d la espol que estudia'
# 2da Evaluación II Término 2009
# Tema 1. mensaje a sms
# TAREA: completar con las otras opciones: que,se, lo

def txtsms(mensaje):
    tm=len(mensaje)
    # inicializa variable de salida
    sms=''
    i=0
    while not(i>=(tm)):
        # si encuentra una 'd' se salta un espacio
        if (mensaje[i-1]=='d' and mensaje[i-2]==' '
            and mensaje[i+1]==' '):
            i=i+1
            
        # copia un caracter
        sms=sms+mensaje[i]
        i=i+1
        
    return(sms)