s1Eva_IIT2016_T1 Analiza una frase por vocales y consonantes

Ejercicio: 1Eva_IIT2016_T1 Analiza una frase por vocales y consonantes

Propuesta de solución en Python, para:

texto = 'Algunas Palabras pArA contar en un programa con algo de Python'

Igual número de consonantes y vocales: 
5
>>>

Algoritmo en Python

# 1ra Evaluación II Término 2016
# Tema 1. cantidad de vocales y consonantes
# Solución propuesta: edelros@espol.edu.ec

# INGRESO
texto = 'Algunas Palabras pArA contar en un programa con algo de Python'

# PROCEDIMIENTO

# Unificando mayúsculas y minúsculas
texto = texto.upper()

# Separa palabras por espacios
# Tarea: considerar ',' y '.'
partes = texto.split(' ')
m = len(partes)

vocales = 'AEIOU'
consonantes = 'BCDFGHJKLMNPQRSTVWXYZ'

cuenta = 0
j=0
while not(j>=m):
    palabra = partes[j]

    # Analiza una palabra
    n=len(palabra)
    cvocal=0  #contador vocal
    cconso=0

    i=0
    while not(i>=n):
        letra = palabra[i]
        if letra in vocales:
            cvocal=cvocal+1
        else:
            cconso=cconso+1
        i=i+1

    if (cvocal==cconso):
        cuenta=cuenta+1
    j=j+1

# SALIDA
print('Igual número de consonantes y vocales: ')
print(cuenta)

s1Eva_IT2016_T2 historial de visitas web

Ejercicio: 1Eva_IT2016_T2 historial de visitas web

Propuesta de solución en Python:

# 1ra Evaluación I Término 2016
# Tema 3. Navegacion de empleados en empresa
import numpy as np

# INGRESO
visitados = [ 'maria2|www.facebook.com|160',
              'xavi7|www.eluniverso.com|50',
              'jose15|www.sri.gob.ec|30',
              'maria2|www.twitter.com|30',
              'xavi7|www.inec.gob.ec|10',
              'maria2|www.espol.edu.ec|50',
              'jose15|www.sri.gob.ec|120',
              'xavi7|www.sri.gob.ec|20',
              'maria2|www.twitter.com|20',]
empleados = ['maria2',
             'jose15',
             'xavi7']
trabajo = ['www.espol.edu.ec',
           'www.inec.gob.ec',
           'www.sri.gob.ec']

# PROCEDIMIENTO
# a) sitios que no son de trabajo
ocio = []
n = len(visitados)
i = 0
while not(i>=n):
    registro = visitados[i]
    partes = registro.split('|')
    sitio = partes[1]
    if not(sitio in trabajo):
        if not(sitio in ocio):
            ocio.append(sitio)
    i = i+1

# b) tiempo de internet/empleado
m = len(empleados)
tiempo = np.zeros(m,dtype=int)

n = len(visitados)
i = 0
while not(i>=n):
    registro = visitados[i]
    partes = registro.split('|')
    quien = partes[0]
    indice = empleados.index(quien)
    cuanto = int(partes[2])
    tiempo[indice] = tiempo[indice] + cuanto
    i = i+1

# b) tiempo de internet por empleado/sitio. matrices
k = len(visitados)

n = len(empleados)
todositio = trabajo + ocio
m = len(todositio)
tabla = np.zeros(shape=(n,m), dtype=int)

i = 0
while not(i>=k):
    registro = visitados[i]
    partes = registro.split('|')
    quien = partes[0]
    fila = empleados.index(quien)
    donde = partes[1]
    columna = todositio.index(donde)
    cuanto = int(partes[2])
    tabla[fila,columna] = tabla[fila,columna] + cuanto
    i = i+1

# Tema 3. f)
# empleado es mas ocioso
parte = tabla[:,len(trabajo):]
ocioempleado = np.sum(parte, axis =1)
masocioso = np.argmax(ocioempleado)
quien = empleados[masocioso]

# SALIDA
print('sitios de ocio: ')
print(ocio)
print('tiempos por empleado: ')
print(tiempo)
print('tabla de tiempos: ')
print(tabla)
print('empleado mas ocioso: ', quien)

s1Eva_IT2013_T4 Tabular atención al cliente

Ejercicio: 1Eva_IT2013_T4 Tabular atención al cliente

Propuesta de solución en Python:

# 1ra Evaluación I Término 2013
# Tema 4. Servicio al cliente
# Tarea: literal c)
#  calcular promedio dentro de procedimiento
#  mostrar clientes con atencion menor al promedio en SALIDA
import numpy as np

# INGRESO
n = int(input('cuantos clientes: '))
atencion = np.zeros(n+1, dtype=int)
cliente = 1
while not(cliente>n):
    print('- CLIENTE: ',cliente)
    nota = int(input('califique: '))
    
    while not(nota>=1 and notan):
    nota = atencion[cliente]
    tipo[nota] =tipo[nota] +1
    cliente = cliente +1

# Algoritmo Mayor
mayor = 1  
nota = 2 
while not(nota>5):
    if (tipo[nota]>tipo[mayor]):
        mayor = nota
    nota = nota+1
    
# SALIDA
print('las calificaciones fueron: ')
print(tipo)
print('mayor: ',mayor)
print('tipo[mayor]: ',tipo[mayor])




s1Eva_IIT2013_T2 Números simétricos

Ejercicios: 1Eva_IIT2013_T2 Números simétricos

Se propone una solución en Python para el literal a.

Se pide un solo número, al que se invierte los dígitos usando el residuo y el cociente apra extraer cada uno.

Se rearma el número de forma inversa para verificar si el igual al número original, siendo solamente así un número simétrico.

Tarea: implementar el literal b a partir de la solución del literal a.

# 1Eva_IIT2013_T2 Números simétricos

# INGRESO
numero = int(input('numero a revisar: '))

# PROCEDIMIENTO
numcopia = numero
cociente = numcopia
nuevo = 0
while not(cociente<=0):
    numcopia = cociente
    cociente = numcopia//10
    residuo = numcopia%10
    nuevo = nuevo*10+residuo
if (nuevo == numero):
    simetrico = 1
else:
    simetrico = 0

# SALIDA
print('numero invertido: ', nuevo)
print('Simetrico:', simetrico)

s1Eva_IT2013_T1 Primos gemelos

Ejercicio: 1Eva_IT2013_T1 Primos gemelos

Propuesta de solución en Python:

# 1ra Evaluación I Término 2013
# Tema 1. Verifica numero primo gemelo
import numpy as np

# INGRESO
# Tarea: crear el ingreso de vector
secuencia = np.array([2,3,4,5,6,7,8,9])

# PROCEDIMIENTO
tamano = len(secuencia)

# supone que todos cumplen
cumple = np.ones(tamano, dtype=int)
posicion = 0
while (posicion<tamano):
    n = secuencia[posicion]
    
    # PROCEDIMIENTO esprimo 
    esprimo = 1
    divisor = 2
    while not(divisor>=n or esprimo==0):
        r = n%divisor
        if (r == 0):
            esprimo = 0
        divisor = divisor +1
        
    cumple[posicion] = esprimo
    posicion = posicion+1

cuantos = np.sum(cumple)
soloprimos = np.zeros(cuantos,dtype=int)

# separa solo los primos
posicion = 0
silla = 0
while not(posicion>=tamano):
    if (cumple[posicion]==1):
        soloprimos[silla] = secuencia[posicion]
        silla = silla +1
    posicion = posicion +1

# BUSCA GEMELOS
silla = 0
while not(silla>=(cuantos-1)):
    sigue = silla +1
    diferencia = soloprimos[sigue] -soloprimos[silla]
    if (diferencia==2):
        print('pareja gemelo: ')
        print(soloprimos[silla],soloprimos[sigue])
    silla = silla +1
    
# SALIDA
print('secuencia ', secuencia)
print('cumple:   ', cumple)
print('soloprimos:', soloprimos)

s1Eva_IT2004_T3 Sortear parejas para tenis

Ejercicio: 1Eva_IT2004_T3 Sortear parejas para tenis

Propuesta de solución en Python:

La variable n indica el número de parejas o tamaño de los vectores para almacenar la «pareja» y el contador de «veces» que juega dada una.

# 1Eva_IT2004_T3 Sortear parejas para tenis

import random as rnd
import numpy as np

# INGRESO
n = int(input('cuantas parejas: '))

# PROCEDIMIENTO
pareja = np.zeros(2*n+1,dtype=int)
veces =  np.zeros(n+1, dtype=int)

dama = n+1
while not(dama>(2*n)):
    quien = int(rnd.random()*n)+1
    pareja[dama] = quien
    veces[quien] = veces[quien]+1
    dama = dama+1

# SALIDA
print(pareja[n+1:])
print('veces: ')
print(veces)

print('juegan varias veces: ')
caballero = 1
while not(caballero>n):
    if (veces[caballero]>1):
        print(caballero)
    caballero =  caballero +1

print('los que no juegan: ')
caballero = 1
while not(caballero>n):
    if (veces[caballero]==0):
        print(caballero)
    caballero =  caballero +1

con un ejemplo de resultado:

cuantas parejas: 10
[ 6  2  1  8  3  9 10  1  7  9]
veces: 
[0 2 1 1 0 0 1 1 1 2 1]
juegan varias veces: 
1
9
los que no juegan: 
4
5
>>> 

s1Eva_IT2005_T4 Lanza penales

Ejercicio: 1Eva_IT2005_T4 Lanza penales

Propuesta de solución en Python:

# 1Eva_IT2005_T4 Lanza penales
import random as rnd

conseguido = 0
lanza = 0
while not(lanza==5):

    # Patea
    print('Penal número: ', lanza)
    patea = int(input('donde patea: '))
    while not(patea>=1 and patea<=6):
        patea = int(input('OE!..donde patea: '))

    # Arquero
    arquero = int(rnd.random() * 6) +1

    # Gol/tapa
    if not(patea==arquero):
        gol=1
    else:
        gol=0

    conseguido = conseguido + gol
    lanza=lanza+1

    # Resultado
    print('patea, arquero, gol/tapa')
    print(patea, arquero, gol)

print('*** Goles conseguidos: ', conseguido)

s1Eva_IIT2006_T2 Dígito verificador de cuenta

Ejercicio: 1Eva_IIT2006_T2 Dígito verificador de cuenta

Propuesta de solución en Python, otras propuestas : py_pdf, m_pdf

Para números de cuenta con 5 dígitos, se extrae el digito verificador usando el residuo para 10; con el cociente de la división para 10 queda el número de cuenta como se indica en la descripción.

Se continúa con las operaciones para los siguientes dígitos y se obtiene el verificador calculado para compararlo con el verificador recibido, estableciendo si la respuesta es afirmativa o negativa.

Opción 1. Usando lazos, es más general para usar mayor cantidad de dígitos

# 1Eva_IIT2006_T2 Dígito verificador de cuenta
# INGRESO
codigo = int(input('escriba el codigo completo: '))

# PROCEDIMIENTO
escrito = codigo%10
numero = codigo//10

multimpar = 1
sumapar = 0
while not(numero<=0):
    impar = numero%10
    numero = numero//10
    multimpar = multimpar*impar
    par = numero%10
    numero = numero//10
    sumapar = sumapar+par
suma = sumapar + multimpar
calculado = suma%10

if (escrito == calculado):
    respuesta = 1
else:
    respuesta = 0

# SALIDA
print(respuesta)

Opción 2. En caso que requiera repasar más sobre lazos, aún se presenta una solución particular, solo para cuatro dígitos.

# 1ra Evaluación II Termino 2006
# Tema 2. Verificador cuenta. Ejercicio Básico
# INGRESO
codigo = int(input('escriba el codigo completo: '))

# PROCEDIMIENTO
escrito = codigo%10
numero = codigo//10

a = numero%10
numero = numero//10

b = numero%10
numero = numero//10

c = numero%10
d = numero//10

suma = a*c+(b+d)
calculado = suma%10

if (escrito == calculado):
    respuesta = 1
else:
    respuesta = 0

# SALIDA
print(respuesta)

s1Eva_IIT2013_T3 Juego Semillero

Ejercicios: 1Eva_IIT2013_T3 Juego Semillero

Propuesta de solución en Python, realizada solo para dos jugadores.
Observe que al lanzar dos dados, el rango de opciones es [2,12].

La variable quien determina el turno del jugador.

TAREA: Implementar con arrreglos para n jugadores.

# 1ra Evaluación II Término 2013
# Tema 3. Juego del semillero
# usando solo dos jugadores
import random as rnd

apuesta = int(input('cuantas canicas: '))
while not(apuesta>=20):
    apuesta = int(input('mas de 20 canicas: '))

# PROCEDIMIENTO
semillero = 2*apuesta
A = 0
B = 0
quien = 1
while not(semillero<=0):

    # Juega A
    if (quien==1):
        dado1 = int(rnd.random()*6)+1
        dado2 = int(rnd.random()*6)+1
        suma = dado1+dado2
        if (suma<=semillero):
            A = A + suma
            semillero = semillero -suma
        else:
            A = A +semillero
            semillero = 0

    # Juega B
    if (quien==2):
        suma = int(rnd.random()*11)+2
        if (suma<=semillero):
            B = B + suma
            semillero = semillero -suma
        else:
            B = B +semillero
            semillero = 0
    # cambia jugador
    if (quien==1):
        quien = 2
    else:
        quien = 1

# Determina ganador
gana = 1
if (dadoA < dadoB):
    gana = 2

if (B==A):
    gana = 0
    
# salida
print('canicas de A: ', A)
print('canicas de B: ', B)
print('estado semillero: ', semillero)
print('jugador ganador: ', gana)

s1Eva_IIT2011_T3 Parchis 2 fichas

Ejercicio: 1Eva_IIT2011_T3 Parchis 2 fichas

Propuesta de solución en Python

Inicie lanzando un dado para el primer jugador y avance su posición tantas veces sea necesario hasta que llegue a la meta.

Luego incorpore al segundo jugador y observe las posiciones de cada uno hasta que llegue uno de ellos a la meta para seleccionar al ganador.

# 1Eva_IIT2011_T3 Parchis 2 fichas
# Tarea: implementar la selección de inicio
import random as rnd

# INGRESO
meta = 50

a=0
b=0

# PROCEDIMIENTO
while not(a>=meta or b>=meta):

    dado = int(rnd.random()*6)+1
    a = a + dado
    if (a==b):
        b=0

    dado = int(rnd.random()*6)+1
    b = b + dado
    if (b==a):
        a=0

if (a>=50):
    gana = 1
else:
    gana = 2


# SALIDA
print(gana)