| INFORMACIÓN BÁSICA | |||||
|---|---|---|---|---|---|
| ASIGNATURA: | Programación | ||||
| TÍTULO DE LA PRÁCTICA: | Python | ||||
| RECURSOS: | |||||
DOCENTES:
|
|||||
- Programar usando Python.
- Mostrar un ejemplo de separación de intereses en clases: el modelo (lista de strings) de su vista (dibujo de gráficos).
- Listas
- Ciclos
- Programación orientada a objetos
- ¿Programación funcional?
-
Virtual Environment
- La reutilización de código(paquetes, librerias, plugins, etc.) de terceros nos permite construir software más complejo.
- NodeJS usa paquetes instalados en el directorio de trabajo y no de manera global, registrando estos paquetes en sus versiones en el archivo package.json.
- Por eso este modo de trabajo nos permite tener distintos proyectos con distintas bibliotecas, de distintas versiones, en la misma máquina, sin que existan conflictos.
- Para compartir el proyecto se debe compartir el archivo package.json y luego llamar a "npm install" para instalar las bibliotecas adecuadas para el proyecto.
- Java usa ant y maven, junto con archivos xml para realizar estas tareas.
- Python tiene virtualenv, para crear este espacio de trabajo.
- Python utiliza el manejador de paquetes pip.
-
Utilizar Python
-
Para un instalación local en sistemas operativos MS Windows utilice: https://www.python.org/downloads/windows/
-
Tambien ud puede probar código en herramientas online: https://www.programiz.com/python-programming/online-compiler/
-
Python en Debian GNU/Linux:
- Debian Linux viene con Python 3 y Python 2 preinstalados.
python3 --version Python 3.9.2
- Instalemos pip, una herramienta que instalará y administrará los paquetes de programación que queramos usar en nuestros proyectos de desarrollo.
sudo apt-get install -y python3-pip
- Paquetes y herramientas de desarrollo más para instalar para garantizar que tengamos una configuración sólida para nuestro entorno de programación:
sudo apt-get install build-essential libssl-dev libffi-dev python3-dev
- Debian Linux viene con Python 3 y Python 2 preinstalados.
-
Configurar un entorno virtual:
-
Los entornos virtuales permiten tener un espacio aislado en los proyectos Python
-
Garantizando que cada proyecto pueda tener su propio conjunto de dependencias que no interrumpirán a otros proyectos.
-
Manejando diferentes versiones de los paquetes. Esto es especialmente importante cuando se trabaja con paquetes de terceros.
-
Puede varios entornos de programación.
-
Cada entorno es un directorio en la que se ubicaran sus scripts.
-
Usaremos el módulo venv , que es parte de la biblioteca estándar de Python.
-
Instalemos venv escribiendo:
sudo apt install -y python3-venv
-
Para crear un ambiente elija en qué directorio.
mkdir -p ~/unsa/pw2/labs/lab04/my_env cd ~/unsa/pw2/labs/lab04/my_env
-
En el directorio crea un entorno virtual ejecutando el siguiente comando:
virtualenv -p python3 . mkdir -p ~/unsa/pw2/labs/lab04/my_env/src cd ~/unsa/pw2/labs/lab04/my_env/src
-
Esto es lo que sucedio:
tree -L 2 ../
. ├── bin │ ├── activate │ ├── activate.csh │ ├── activate.fish │ ├── activate.nu │ ├── activate.ps1 │ ├── activate_this.py │ ├── deactivate.nu │ ├── pip │ ├── pip3 │ ├── pip-3.9 │ ├── pip3.9 │ ├── python -> /usr/bin/python3 │ ├── python3 -> python │ ├── python3.9 -> python │ ├── wheel │ ├── wheel3 │ ├── wheel-3.9 │ └── wheel3.9 ├── lib │ └── python3.9 ├── pyvenv.cfg └── src
-
Ejecute el script de activación para activar el entorno virtual:
source ../bin/activate(my_env) user@localhost:$
-
Cree el "Hola Mundo" en su entorno de programación:
vim hello.py
print("Hello, World!")python3 hello.py
-
Para salir del entorno virtual:
deactivate
-
-
-
Active su entorno virtual
source ../bin/activate -
Ejercicios sobre matrices de tamaño NxN:
-
Determine si una matriz es escalar:
vim esEscalar.py
def esEscalar(m): d = m[0][0] for i in range(len(m)): for j in range(len(m)): if i != j: if m[i][j] != 0: print(m[i][j]) return False elif m[i][j] != d: print(m[i][j]) return False return Truevim test_esEscalar.py
import esEscalar as fu def prueba(M): if (fu.esEscalar(M)): print("Si es escalar") else: print("No es escalar") #Z = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] #Z = [[1, 2, 3], [4, 1, 6], [7, 8, 1]] Z = [[1, 0, 0], [0, 1, 0], [0, 0, 1]] prueba(Z) -
Determine si una matriz es unitaria:
vim esUnitaria.py
import esEscalar as fu def esUnitaria(m): return m[0][0] == 1 and fu.esEscalar(m)vim test_esUnitaria.py
import esUnitaria as fu def prueba(M): if (fu.esUnitaria(M)): print("Si es unitaria") else: print("No es unitaria") #Z = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] #Z = [[1, 2, 3], [4, 1, 6], [7, 8, 1]] Z = [[2, 0, 0], [0, 2, 0], [0, 0, 2]] #Z = [[1, 0, 0], [0, 1, 0], [0, 0, 1]] prueba(Z)
-
-
En esta tarea usted pondrá en práctica sus conocimientos de programación en Python para dibujar un tablero de Ajedrez.
-
La parte gráfica ya está programada, usted sólo tendrá que concentrarse en las estructuras de datos subyacentes.
-
Con el código proporcionado usted dispondrá de varios objetos de tipo Picture para poder realizar su tarea:

-
Estos objetos estarán disponibles importando la biblioteca: chessPictures y estarán internamente representados con arreglos de strings que podrá revisar en el archivo pieces.py
-
La clase Picture tiene un sólo atributo: el arreglo de strings img, el cual contendrá la representación en caracteres de la figura que se desea dibujar.
-
La clase Picture ya cuenta con una función implementada, no debe modificarla, pero si puede usarla para implementar sus otras funciones:
- _invColor: recibe un color como un caracter de texto y devuelve su color negativo, también como texto, deberá revisar el archivo colors.py para conocer los valores negativos de cada caracter.
-
La clase Picture contará además con varios métodos que usted deberá implementar:
- verticalMirror: Devuelve el espejo vertical de la imagen
- horizontalMirror: Devuelve el espejo horizontal de la imagen
- negative: Devuelve un negativo de la imagen
- join: Devuelve una nueva figura poniendo la figura del argumento al lado derecho de la figura actual
- up: Devuelve una nueva figura poniendo la figura recibida como argumento, encima de la figura actual
- under: Devuelve una nueva figura poniendo la figura recibida como argumento, sobre la figura actual
- horizontalRepeat, Devuelve una nueva figura repitiendo la figura actual al costado la cantidad de veces que indique el valor de n
- verticalRepeat Devuelve una nueva figura repitiendo la figura actual debajo, la cantidad de veces que indique el valor de n
-
Tenga en cuenta que para implementar todos estos métodos, sólo deberá trabajar sobre la representación interna de un Picture, es decir su atributo img.
-
Para dibujar una objeto Picture bastará importar el método draw de la biblioteca interpreter y usarlo de la siguiente manera:
$ python3 Python 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110] on linux Type "help", "copyright", "credits" or "license" for more information.
>>> from chessPictures import * >>> from interpreter import draw pygame 1.9.6 Hello from the pygame community. https://www.pygame.org/contribute.html >>> draw(rock) -
Ejercicios:
-
Para resolver los siguientes ejercicios sólo está permitido usar ciclos, condicionales, definición de listas por comprensión, sublistas, map, join, (+), lambda, zip, append, pop, range.
-
Implemente los métodos de la clase Picture. Se recomienda que implemente la clase picture por etapas, probando realizar los dibujos que se muestran en la siguiente preguntas.
-
Usando únicamente los métodos de los objetos de la clase Picture dibuje las siguientes figuras (invoque a draw):
-
-
- ¿Qué son los archivos *.pyc?
- ¿Para qué sirve el directorio pycache?
- ¿Cuáles son los usos y lo que representa el subguión en Python?







