Está en la página 1de 3

Tópicos

Especiales II
Facultad de Ingeniería de Sistemas Computacionales
Grupo VIL-341
2do Semestre 2020

Laboratorio #2 – Python Esencial (100 puntos)

Asignada: 16 de septiembre de 2020
Fecha de Entrega: 1 de octubre de 2020 (11:59pm)

Nota: La tarea debe ser enviada de manera individual a través de la plataforma Campus Virtual en un archivo .zip.
Provea sus respuestas, ya sean comandos correctos y/o código en formato digital (formato Word) o en capturas de
pantalla cuando sea requerido. En cuanto sea posible sea claro con sus respuestas.

Observación: Identifique su código con su nombre, y correo en la parte superior del código utilizando el símbolo de
comentario #.

Parte I. Python Esencial

Problema 1. Lectura de argumentos del usuario en Python (40 puntos).

1. Escriba un script llamado nparesab.py que reciba dos argumentos desde la línea de comandos, usando sys.argv()
como parámetros entrada. El primer parámetro será nuestro numero inferior y el segundo será nuestro
numero superior.
• Primero verifique que los argumentos pasados sean números enteros, luego verifique que el numero
superior sea mayor que el numero inferior.
• Escriba una tenga una función llamada pares que reciba el numero inferior y el numero superior y
devuelva una lista de los números pares entre inferior y superior inclusive.

2. Escribe un script llamado funcionesvarias.py que tenga las siguientes funciones:
a. Una función llamada cadenareversa() que reciba como argumento una cadena (lista) y devolverá el
reverso de esa cadena (lista).
b. Una función llamada combinalista() que toma dos listas de números como entradas y devuelve una
sola lista con los valores de ambas listas manera ordenada.

Sugerencia: Lea los parámetros del usuario usando input.

3. Escriba un script llamado verifica_anagrama.py que tomará dos cadenas y devolverá True si son anagramas de
cada una otro y False de lo contrario. Por ejemplo, si tenemos dos palabras ‘paso’ y 'sopa' esto se evaluaría a
True, ya que uno puede formar una palabra mezclando las letras en el otra.

Sugerencia: Lea las cadenas como entrada del usuario usando input.

4. Escriba un script llamado enromano.py que tome un número del usuario entre 1 y 1000 (verifique que el
numero esta en este rango) y lo transforme a su notación en números romanos. Recuerdo que los números
romanos se simbolizan con los siguientes caracteres:

Numero en Arábigo Numero En Romano
I 1
V 5
X 10
L 50
C 100
D 500
M 1000

Sugerencia: Lea las cadenas como entrada del usuario usando input. No utilice ninguna librería estándar de
Python, utilice ciclos recursivos y manejo de cadenas para realizar el problema. Recordar que para representar
un numero menor al numero en romano, por ejemplo, el numero 46, se concatena desde la izquierda así: XLVI




1
Problema 2. Corrija el Siguiente Pseudo-código y llévelo al lenguaje Python (15 puntos)

Revise el ejemplo abajo proporcionado escrito en pseudo-código Python, de modo que este juego de adivinanzas le
permita a un jugador, como máximo, 10 intentar adivinar un número entero aleatorio entre 0 y 100 (inclusive).
Después de cada jugada, el programa dirá si la respuesta es demasiado baja, demasiado alta o si es la respuesta
correcta, y después de 10 jugadas o un acierto, que el juego termine. Al final del juego, el programa dirá que el jugador
ha ganado o perdido.

numero_secreto = genere un numero aleatorio
prueba = -1
while prueba != numero_secreto
prueba = adquiere un numero del usuario
if prueba < numero_secreto
print("Su numero es muy bajo")
else if prueba > numero_secreto
print("Su numero es muy alto")
else
print("Acertaste, el numero correcto era ",numero_secreto)
end if
end while


Parte II. Python Manejo de Archivos

El lenguaje Python se caracteriza por ser un lenguaje portable, con módulos preinstalados, acceso a rutinas de bajo
nivel, y sobre todo por su amplio manejo de formatos de archivos. En clase hemos visto cómo leer archivos de texto
plano y archivos en formato comma-separated-values.

Problema 3. Manejos de Archivo de texto plano (15 puntos)

Escriba un script llamado analizacodigo.py que recibe un script de Python de entrada y realice las siguientes funciones:

● Lee el archivo en una estructura de lista (use readlines() )
● Cuente el número de líneas totales del archivo
● Cuente el número de líneas vacías del archivo
● Cuente el numero de líneas comentadas

Sugerencia: utilice funciones como find, split, strip, “in”, len para obtener los resultados.

Desde inicios de los años 2000 en Panamá se han llevado los esfuerzos para crear medidas de transparencia
gubernamental y acceso a los datos generados por la gestión pública. En 2002 se aprueba la Ley N° 6 de 22 de enero
de 2002, que ampara el derecho de Habeas Data y desde ese momento existen legislaciones y disposiciones para la
transparencia gubernamental (http://www.antai.gob.pa/legislacion/). En los últimos años hemos visto el surgimiento
de algunos esfuerzos desde el plano gubernamental con Datos Abiertos Panamá (https://www.datosabiertos.gob.pa/)
y desde el plano social y cívico de una organización no gubernamental con “El Tabulario” de Nueva Nación
(http://data.nuevanacion.com/). Desde el 2019, se ha dado a conocer un sitio de Consulta de Pagos de Planillas y
Donaciones de la Asamblea Legislativa, en la dirección: http://www.contraloria.gob.pa/CGR.CONSULTAPAGOS/.



Adjunto encontrará el archivo planilla.csv, una versión fidedigna extraída del archivo publicado en formato CSV, que
corresponde al gasto total de la Asamblea en concepto de Planillas y Donaciones para en todo el periodo, 2014-2019.

2
Problema 4. Escriba un script llamado leeplanillas.py que lea el archivo planillas.csv con la función csv.reader, que
haga las siguientes tareas:

● Lee las columnas del archivo (primera línea del archivo) con la funcion __next__()
● Verifique el número de transacciones que se registran en el archivo
● Verifique si SU cédula (o documento de identidad) existe en la base de datos
● Elija un año en particular (entre 2014 y 2019) y verifique el número y monto de transacciones que se realizaron

Sugerencia: vea la información requerida para utilizar el modulo csv en
https://docs.python.org/3.5/library/csv.html

Problema 5. Manejo de Archivos JSON (15 puntos)

JSON (o en ingles, Notación de objetos de JavaScript) es un formato de intercambio de datos independiente del idioma.
En la actualidad. JSON se ha convertido en un estándar de facto para la transferencia de datos a través de la web.

Utilizando los módulos datetime, json y requests (es una librería que se utiliza para hacer peticiones a servidores http,
FTP y APIs REST/SOAP) en el caso de que no este instalada en su sistema la puede instalar con el comando $pip install
requests en su Terminal) realice un script llamado contadordecommits.py que realice las siguientes funciones:

• Tenga una función llamado descargajson() que reciba como parámetro una dirección web.
o En este problema haremos una consulta al API REST de Github, de modo que La dirección web será una
lista de los commits hechos al repositorio de Github de un proyecto de software, por ejemplo, los
siguientes proyectos y sus repositorios (También puede elegir alguno de su preferencia):
§ Tensorflow (https://api.github.com/repos/tensorflow/tensorflow/stats/commit_activity)

• Esta función debe salvar el contenido de la pagina utilizando requests.get(), verifique que la petición le da un
código de status 200 y proceda salvarlo en un archivo json.

• Sobre el archivo json, verifique que la estructura de las entradas sean 3 campos “days”, “total” y “week”

• Se requiere que verifique:
o El día de la semana (lunes a domingo) se dan mas commits.
o La semana en que se han dado mayor numero de commits. Recuerde que el campo “week” esta dado en
tiempo “timestamp” de UNIX de modo que tiene que convertirlo a tiempo “normal” utilizando la función
fromtimestamp()

• Verifique el numero de commits para una semana especifica en la pagina del repositorio en el que usted
decidió investigar, por ejemplo en: https://github.com/tensorflow/tensorflow/graphs/commit-activity
(HAGA UNA CAPTURA DE PANTALLA).

También podría gustarte