s2Eva_IT2013_T1 Función sorteoentre(k,a,b)

Ejercicio: 2Eva_IT2013_T1 Función sorteoentre(k,a,b)

Solución propuesta en Python, continúa en Tema 2.

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IT2013_T1 Una Tabla de Bingo
# propuesta: edelros@espol.edu.ec

import random as rnd
import numpy as np

def sorteoentre(k,a,b):
    suertudos = []
    i = 0
    while not(i>=k):
        sorteo = int(rnd.random()*(b-a+1))+a
        if not(sorteo in suertudos):
            suertudos.append(sorteo)
            i = i+1
    return(suertudos)

resultado del algoritmo

>>> sorteoentre(5,1,15)
[11, 14, 7, 10, 6]
>>> sorteoentre(5,16,30)
[17, 18, 26, 30, 27]
>>> 

s2Eva_IIT2013_T2 Verificar secuencia ADN

Ejercicio: 2Eva_IIT2013_T2 Verificar secuencia ADN

Propuesta de solución en Python:

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IIT2013_T2 Verificar secuencia ADN
# propuesta: edelros@espol.edu.ec

def ordenados(cadena):
    n = len(cadena)
    cadena  = cadena.upper()
    validos = 'ACGT'
    pares   = 0

    # solo hasta penúltimo
    i = 0
    while not(i>=(n-1)): 
        elemento  = cadena[i]
        elemento2 = cadena[i+1]
        if (elemento<=elemento2):
            pares = pares + 1
        i = i + 1
        
    # validar elementos en cadena
    noADN = 0
    i = 0
    while not(i>=n):
        elemento = cadena[i]
        if not(elemento in validos):
            noADN = noADN - 1
        i = i + 1

    # corrige de ser necesario
    if (noADN<0): 
        pares = noADN
        
    return(pares)

Ejemplo

>>> cadena='CCGAATCGTA'
>>> ordenados(cadena)
6
>>> cadena='CBGAATCGWA'
>>> ordenados(cadena)
-2

s2Eva_IT2013_T2 Una Tabla de Bingo

Ejercicio: 2Eva_IT2013_T2 Una Tabla de Bingo

2Eva_IT2013_T1 Función sorteoentre(k,a,b)

Propuesta de solución en Python, continua desde tema 1:

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IT2013_T1 Una Tabla de Bingo
# propuesta: edelros@espol.edu.ec

import random as rnd
import numpy as np

def sorteoentre(k,a,b):
    suertudos = []
    i = 0
    while not(i>=k):
        sorteo = int(rnd.random()*(b-a+1))+a
        if not(sorteo in suertudos):
            suertudos.append(sorteo)
            i = i+1
    return(suertudos)

# 2Eva_IT2013_T2 Una Tabla de Bingo
n = 5
#Rango inicial de B [1,15]
a = 1  
b = 15
incremento = 15

# PROCEDIMIENTO
tabla = np.zeros(shape=(n,n),dtype=int)
columna = 0
while not(columna>=n):
    datos = sorteoentre(n,a,b)
    for fila in range(0,n,1):
        tabla[fila,columna]=datos[fila]
    a = a + incremento
    b = b + incremento
    columna = columna + 1
    
# corrige el cero en la posicion central
mitad = n//2
tabla[2,2] = 0

# SALIDA
print(tabla)

Ejemplo:

>>> ================================ RESTART ==========
>>> 
[[ 4 28 37 51 63]
 [15 18 45 56 74]
 [13 23  0 48 69]
 [ 2 20 34 58 72]
 [ 3 16 32 50 71]]
>>> ================================ RESTART ==========
>>> 
[[ 2 17 37 58 75]
 [13 24 45 53 65]
 [ 7 19  0 51 73]
 [15 23 36 52 69]
 [ 3 30 39 47 67]]
>>>

 

s2Eva_IT2014_T1 Palabras con eco

Ejercicio: 2Eva_IT2014_T1 Palabras con eco

Propuesta de solución en Python:

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IT2014_T1 Palabras con eco
# TAREA: solo compara la ultima letra
#        completar para al menos tres letras

# INGRESO
frase = input('frase: ')

# PROCEDIMIENTO
eco = 1
n = len(frase)

# ultima letra de la ultima palabra
a = frase[n-1]

# ultima letra de la penultima palabra
# Buscar letra en la otra palabra
b = ''
i = n-1
while (i>0):
    if (frase[i]==' '):
        b = frase[i-1]
    i = i - 1

# letras eco
if not(a==b):
    eco = 0
# Completar para al menos las tres ultimas letras

# SALIDA
print(eco)

resultado del algoritmo

>>> 
frase: coso oloroso
1
>>> 
frase: casa erwq
0

s2Eva_IIT2015_T3 Playaton limpieza de playas

Ejercicio: 2Eva_IIT2015_T3 Playaton limpieza de playas

Continuación del tema 2. Propuesta de solución en Python: pyT2_pdf, pyT3_pdf

# ICM00794-Fundamentos de Computación - FCNM-ESPOL
# 2Eva_IIT2015_T2 funcion totalportipo(tabla)
# propuesta de repaso: edelros@espol.edu.ec

import numpy as np

def totalportipo(tabla):
    # Tamaño de tabla con codigoplaya,recolectado
    n,k = tabla.shape  
    
    # verifica banderas repetido cambiando a 1
    repetidos = np.zeros(n,dtype=int)
    i = 0
    while not(i>=(n-1)):
        j = i + 1
        while not(j>=n):
            if (tabla[i,0]==tabla[j,0]):
                repetidos[j] = 1
            j = j+1
        i = i + 1
    
    # cuenta los que se eliminan
    # para ver los m que son únicos
    eliminar = 0
    fila = 0
    while not(fila>=n):
        eliminar = eliminar + repetidos[fila]
        fila = fila + 1
    m = n-eliminar

    # copiar codigos unicos en tabulado columna 0
    tabulado = np.zeros(shape=(m,3), dtype=float)
    fila = 0
    j = 0
    while not(fila>=n):
        if (repetidos[fila]==0):
            tabulado[j,0] = tabla[fila,0]
            j = j + 1
        fila = fila + 1

    # Cuenta voluntarios por playa en tabulado columna 1
    # Acumula recolectado por playa en tabulado columna 2
    fila = 0
    while not(fila>=n):
        cual = tabla[fila,0]
        # encuentra el índice en donde
        donde = np.where(tabulado[:,0]==cual) 
        tabulado[donde,1] = tabulado[donde,1] + 1
        tabulado[donde,2] = tabulado[donde,2] + tabla[fila,1]
        fila = fila + 1

    # acumula lo recolectado por playa
    return(tabulado)


# 2Eva_IIT2015_T3 Playaton limpieza de playas
voluntarios = []
opcion = 0
while not(opcion==7):
    print('1. registrar voluntario')
    print('2. registrar Kg recolectada/voluntario')
    print('3. conteo de voluntarios')
    print('4. tabular recolectado')
    print('5. Guardar archivo')
    print('6. Abrir archivo')
    print('7. Salir')
    
    opcion = int(input(' opcion:'))
    
    if (opcion==1):
        print('-- registrar voluntario --')
        ced = int(input('cédula: '))
        nom = input('nombre: ')
        pla = int(input('codigo playa: '))
        rec = 0
        registro = {'cedula':ced,
                    'nombre': nom,
                    'playa':pla,
                    'recolectado':rec}
        voluntarios.append(registro)
        print('gracias por participar')

    if (opcion==2):
        print('-- registrar Kg recolectado/voluntario --')
        ced = int(input('cédula: '))
        rec = float(input('recolectado: '))
        
        # buscar voluntario,
        # Podría buscar con index en la lista
        encontre = -1
        n = len(voluntarios)
        fila = 0
        while not(encontre>=0 or fila>=n):
            if (voluntarios[fila]['cedula']==ced):
                encontre = fila
            fila = fila + 1
        
        if (encontre>=0):
            voluntarios[encontre]['recolectado'] = rec
            print('recolectado:',rec)
        else:
            print('no esta registrado este voluntario')

    if (opcion==3):
        print('--- cuenta voluntarios ---')
        n = len(voluntarios)
        # extraer columnas codigoplaya y recoletado
        tabla = np.zeros(shape=(n,2),dtype=float)
        fila = 0
        while not(fila>=n):
          tabla[fila][0] = voluntarios[fila]['playa']
          tabla[fila][1] = voluntarios[fila]['recolectado']
          fila = fila + 1
        resultado = totalportipo(tabla)

        print('los voluntarios presentados son:',n)
        print(resultado)

    if (opcion==4):
        print('-- tabular recolectado --')
        n = len(voluntarios)
        # extraer vector codigos playas
        tabla = np.zeros(shape=(n,2),dtype=float)
        fila = 0
        while not(fila>=n):
          tabla[fila][0] = voluntarios[fila]['playa']
          tabla[fila][1] = voluntarios[fila]['recolectado']
          fila = fila + 1
        resultado = totalportipo(tabla)

        #total recolectado
        m,k = resultado.shape
        total = 0
        i = 0
        while not(i>=m):
            total = total + resultado[i,2]
            i = i + 1
        print('El total recolectado es:',total)
        print('El total por playa es: ')
        print(resultado)

    if (opcion==5):
        print('---- guardar el archivo de voluntarios ---')
        
        # prepara el modo escritura 'w' de archivo
        archivo = open('voluntarios.txt','w')
        
        n = len(voluntarios)
        fila = 0
        while not(fila>=n):

            # Crea la linea de texto de los datos
            # para un registro, separada por comas
            registro = str(voluntarios[fila]['cedula'])
            registro = registro + ',' + voluntarios[fila]['nombre']
            registro = registro + ',' +str(voluntarios[fila]['playa'])
            registro = registro + ',' +str(voluntarios[fila]['recolectado']) +'\n'

            # Escribe en el archivo
            archivo.write(registro)
            fila = fila + 1

        archivo.close()     # Cierra el archivo    
        print('archivo guardado...')

    if (opcion==6):
        print(' --- Abrir archivo de voluntarios---')
        voluntarios = []
        
        # prepara el modo lectura(read 'r') de archivo
        archivo = open('voluntarios.txt','r')
        linea = archivo.readline()

        #Hasta encontrar el final del archivo
        while (linea!=''):
            # Divide los datos por comas
            datos = linea.split(',')  
            ced = int(datos[0])
            nom = datos[1]
            pla = int(datos[2])
            rec = float(datos[3])
            
            # crea el registro diccionario para la lista
            registro = {'cedula':ced,
                        'nombre': nom,
                        'playa':pla,
                        'recolectado':rec}
            
            voluntarios.append(registro)
            # Lee la siguiente linea
            linea=archivo.readline()
            
        archivo.close()  # Cierra el archivo
        
        n = len(voluntarios)
        print(' Se recuperaron '+ str(n) + ' registros de voluntarios')
        
    if (opcion==7):
        print(' gracias por usar el software, @copyritghs')