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')
ejercicios resueltos Python 2eva_iit2015_t3 pdf