Python
Python
https://commons.wikimedia.org/wiki/File:Ada_Lovelace_en_Grandes_Mujeres_de_Chicas_en_Tecnolog%C3%ADa_01.jpg
Código máquina
Ensamblador
el «Hello, World»:
C
Se dice que es un lenguaje de más alto nivel en el sentido de que sus instrucciones son más
entendibles por un humano.
La pregunta que surge es: ¿cómo entiende una máquina lo que tiene que hacer si le
pasamos un programa hecho en Python (o cualquier otro lenguaje de alto nivel)?
Para ser más exactos, en Python hablamos de un intérprete en vez de un compilador, pero a
los efectos es prácticamente lo mismo.
Toma su nombre de los Monty Python, grupo humorista de los 60 que gustaban
mucho a Guido.
Cuando vamos a trabajar con Python debemos tener instalado, como mínimo, un intérprete
del lenguaje (para otros lenguajes sería un compilador). El intérprete nos permitirá ejecutar
nuestro código para obtener los resultados deseados. La idea del intérprete es lanzar
instrucciones «sueltas» para probar determinados aspectos.
Pero normalmente queremos ir un poco más allá y poder escribir programas algo más largos,
por lo que también necesitaremos un editor. Un editor es un programa que nos permite crear
ficheros de código (en nuestro caso con extensión *.py), que luego son ejecutados por el intérprete.
Hay otra herramienta interesante dentro del entorno de desarrollo que sería el depurador. Lo
podemos encontrar habitualmente en la bibliografía por su nombre inglés debugger. Es el
módulo que nos permite ejecutar paso a paso nuestro código y visualizar qué está ocurriendo en
cada momento. Se suele usar normalmente para encontrar fallos (bugs) en nuestros programas
y poder solucionarlos (debug/fix).
Thonny
https://thonny.org/
Instalación de Thonny
Para instalar Thonny debemos acceder a su web y descargar la aplicación para nuestro sistema
operativo.
La ventaja es que está disponible tanto para Windows, Mac y Linux. Una vez descargado el fichero lo
ejecutamos y seguimos su instalación paso por paso.
Una vez terminada la instalación ya podemos lanzar la aplicación que se verá parecida a la siguiente
imagen:
Thonny
Manual de Thonny
Tipos de datos
Los programas están formados por código y datos. Pero a nivel interno de la
memoria del ordenador no son más que una secuencia de bits.
Las variables son fundamentales ya que permiten definir nombres para los valores
que tenemos en memoria y que vamos a usar en nuestro programa.
Reglas para nombrar variables
Mientras se sigan las reglas que hemos visto para nombrar variables no hay problema en la
forma en la que se escriban, pero sí existe una convención para la nomenclatura de las
variables.
Podríamos decir que es un tipo de variable pero que su valor no cambia a lo largo de
nuestro programa.
Quizás es algo excesivo pero da una idea de lo importante que es esta tarea.
Es fundamental que los nombres de variables sean autoexplicativos, pero siempre llegando a un
compromiso entre ser concisos y claros.
Regla general
ASIGNACIÓN
Como recientemente ha sido el día de PI, vamos a asignar ese valor y mostrarlo después por
pantalla.
EJERCICIO DE ASIGNACIÓN
Como recientemente ha sido el día de PI, vamos a asignar ese valor y mostrarlo después por
pantalla.
ASIGNACIÓN
Python nos ofrece la posibilidad de hacer una asignación múltiple de la siguiente manera:
En este caso las tres variables utilizadas en el «lado izquierdo» tomarán el valor 3.
ASIGNACIÓN
¡CUIDADO con no seguir las reglas para los nombres!
Asignando una variable a otra variable
Las asignaciones que hemos hecho hasta ahora han sido de un valor literal a una
variable.
Pero nada impide que podamos hacer asignaciones de una variable a otra variable:
Conocer el valor de una variable
Hemos visto previamente cómo asignar un valor a una variable, pero aún no sabemos cómo
«comprobar» el valor que tiene dicha variable. Para ello podemos utilizar dos estrategias:
1. Si estamos en una «shell» de Python, basta con que usemos el nombre de la variable:
Para poder descubrir el tipo de un literal o una variable, Python nos ofrece la función
type(). ¡CUIDADO!, para que nos muestre el resultado debemos usarla con print())
Ejemplos:
Tarea 2: tipos (comprueba_tipos.py)
https://cutt.ly/lvCyXeL
La característica de que los nombres de variables sean referencias a objetos en memoria es la que hace
posible diferenciar entre objetos mutables e inmutables:
George Boole es considerado como uno de los fundadores del campo de las ciencias de la
computación y fue el creador del Álgebra de Boole que da lugar, entre otras estructuras
algebraicas, a la Lógica binaria.
En esta lógica las variables sólo pueden tomar dos valores discretos: verdadero o falso.
El tipo de datos bool proviene de lo explicado anteriormente y admite dos posibles valores:
Supongamos que disponemos de 100 vehículos en stock y que durante el pasado mes se
han vendido 20 de ellos.
Asignación tradicional
Asignación aumentada
Asignación aumentada
¿Cómo de grande puede ser un int en Python? La respuesta es de cualquier tamaño. Por poner un
ejemplo, supongamos que queremos representar un centillón. Este valor viene a ser un «1»
seguido por ¡600 ceros! ¿Será capaz Python de almacenarlo?
En muchos lenguajes tratar con enteros tan largos causaría un «integer overflow». No
es el caso de Python que puede manejar estos valores sin problema.
Número flotante
Pero también se hace necesario buscar mecanismos para convertir unos tipos de datos
en otros.
Conversión IMPLÍCITA
Aunque más adelante veremos el concepto de función, desde ahora podemos decir que existen
una serie de funciones para realizar conversiones explícitas de un tipo a otro:
bool()
Convierte el tipo a booleano.
int()
Convierte el tipo a entero.
float()
Convierte el tipo a flotante.
Conversión EXPLÍCITA. Ejemplos
int(x)=⌊x⌋
Tarea 3: Ejercicios
o cambiando el orden
Comillas triples
Hay una forma alternativa de crear cadenas de texto utilizando comillas triples.
Su uso está pensado principalmente para cadenas multilínea:
Conversión
Hemos estado utilizando la función print() de forma sencilla, pero admite algunos
parámetros interesantes:
Línea 4:
Podemos imprimir todas las variables que
queramos separándolas por comas.
Línea 7:
El separador por defecto entre las variables es un
espacio, podemos cambiar el carácter que se
utiliza como separador entre cadenas.
Línea 10:
El carácter de final de texto es un salto de línea,
podemos cambiar el carácter que se utiliza como
final de texto.
Leer datos de teclado
Los programas se hacen para tener interacción con el usuario. Una de las formas de
interacción es solicitar la entrada de datos por teclado. Como muchos otros lenguajes
de programación, Python también nos ofrece la posibilidad de leer la información
introducida por teclado. Para ello se utiliza la función input():
Leer datos de teclado
Tarea 4: Calculadora
Escriba un programa en Python que lea por teclado dos números enteros y muestre
por pantalla el resultado de realizar las operaciones básicas entre ellos.
Aproveche todo el
potencial que ofrece
print() para
conseguir la salida
esperada.
Operaciones con «strings»: Combinar cadenas
Es posible extraer «trozos» («rebanadas») de una cadena de texto 2. Tenemos varias aproximaciones para
ello:
[:]
Extrae la secuencia entera desde el comienzo hasta el final. Es una especie de copia de toda la cadena de
texto.
[start:]
Extrae desde start hasta el final de la cadena.
[:end]
Extrae desde el comienzo de la cadena hasta end menos 1.
[start:end]
Extrae desde start hasta end menos 1.
[start:end:step]
Extrae desde start hasta end menos 1 haciendo saltos de tamaño step.
Operaciones con «strings»: Trocear una cadena
Para obtener la longitud de una cadena podemos hacer uso de len(), una función
común a prácticamente todos los tipos y estructuras de datos en Python:
Operaciones con «strings»: Otras funciones
Dividir una cadena: función split(), que debemos usar anteponiendo el «string»
que queramos dividir:
Operaciones con «strings»: Otras funciones
Dividir una cadena: Existe una forma algo más avanzada de dividir una cadena a
través del particionado. Para ello podemos valernos de la función partition()
que proporciona Python.
Esta función toma un argumento como separador, y divide la cadena de texto en 3
partes:
lo que queda a la izquierda del separador,
el separador en sí mismo
y lo que queda a la derecha del separador:
Operaciones con «strings»: Limpiar cadenas
Cuando leemos datos del usuario o de cualquier fuente externa de información, es bastante
probable que se incluyan en esas cadenas de texto, caracteres de relleno 3 al comienzo y al final.
Python nos ofrece la posibilidad de eliminar estos caracteres u otros que no nos interesen.
La función strip() se utiliza para eliminar caracteres del principio y del final de un «string».
También existen variantes de esta función para aplicarla únicamente al comienzo o únicamente
al final de la cadena de texto [lstrip() y rstrip()].
Supongamos que debemos procesar un fichero con números de serie de un determinado
artículo. Cada línea contiene el valor que nos interesa pero se han «colado» ciertos caracteres de
relleno que debemos limpiar:
Operaciones con «strings»: Reemplazar elementos
Python trabaja por defecto con caracteres Unicode. Eso significa que tenemos
acceso a la amplia carta de caracteres que nos ofrece este estándar de codificación.
Supongamos un ejemplo sobre el típico «emoji» de un cohete definido en este cuadro:
Los programas suelen ser más legibles cuando las líneas no son
excesivamente largas. La longitud máxima de línea recomendada por la
guía de estilo de Python es de 80 caracteres.
En caso de que queramos romper una línea de código demasiado larga,
tenemos dos opciones:
1. Usar la barra invertida \
O si el valor es FALSO:
Valor nulo
Para indicar que un string en Python contendrá variables a ser sustituidas debemos anteceder el caracter "f"
ESTRUCTURAS DE CONTROL CONDICIONAL
Ejemplos:
TAREA
Crea una lista con los días de la semana y otra con los
meses del año.
CONVERSIÓN
En muchas ocasiones trabajaremos con una lista vacía que iremos rellenando.
Por ejemplo, quiero crear una lista con los números pares del 1 al 20.
OPERACIONES CON LISTAS
AÑADIR EN CUALQUIER POSICIÓN DE UNA LISTA
Si buscamos un valor que existe más de una vez en una lista, la función index() sólo nos
devolverá el índice de la primera ocurrencia.
OPERACIONES CON LISTAS
OTRAS FUNCIONES DE UNA LISTA
coord_Marbella=(36.51543, -4.88583)
Reyes_Magos=('Melchor', 'Gaspar', 'Baltasar')
DESEMPAQUETADO DE TUPLAS
rae = {
'bifronte': 'De dos frentes o dos caras',
'anarcoide': 'Que tiende al desorden',
'montuvio': 'Campesino de la costa'
Las claves pueden ser cadenas de texto (han de ir entrecomilladas) o valores enteros.
DICCIONARIO con dict()
Acceso a los elementos DICCIONARIO
Acceso a los elementos DICCIONARIO con GET
Existe una función muy útil para «superar» los posibles errores de acceso por
claves inexistentes. Se trata de get() y su comportamiento es el siguiente:
Usando un diccionario, contar el número de veces que se repite cada letra en una
cadena de texto dada (puedes pedirla por teclado)
Obtener todos los elementos de un DICCIONARIO
En este tiempo hemos trabajado con funciones pero, ¿cómo puedo hacer mis
propias funciones?
https://www.freecodecamp.org/espanol/news/guia-de-funciones-de-python-con
-ejemplos/
FUNCIONES
Lo que reducirá
considerablemente el
número total de líneas de
código en tu proyecto.
FUNCIONES: Sintaxis
Además, las variables son accesibles solo desde su propio ámbito, pero
con alguna excepción, como veremos más adelante.
ÁMBITO DE LAS VARIABLES
Ámbito local: corresponde con el ámbito de una función, que existe desde que se
invoca a una función hasta que termina su ejecución. En un programa, el ámbito
local corresponde con las líneas de código de una función.
Cada función tiene su ámbito local. No se puede acceder a las variables de una
función desde fuera de esa función o desde otra función.
Ámbito global: corresponde con el ámbito que existe desde el comienzo de la
ejecución de un programa. Todas las variables definidas fuera de cualquier función
corresponden al ámbito global, que es accesible desde cualquier punto del
programa, incluidas las funciones. Si desde un módulo A importamos un módulo B
mediante un import, desde A podremos acceder a las variables globales de B.
Variables locales
Se definen dos funciones, cada una de las cuales posee su ámbito local.
Las variables y parámetros definidos dentro de cada una de ellas son solo
accesibles desde su ámbito.
El error NameError
Si intentamos acceder al valor de una variable local desde el cuerpo principal del programa o,
en general, a una variable que no ha sido definida obtendremos un error: NameError.
Crea una función con alguno de los ejercicios que hemos hecho antes y ejecútala.
Módulo TURTLE