![No description has been provided for this image](notebooks-img/udc.png)
Primeros pasos en Python
Introducción
La programación es el proceso de escribir un conjunto de instrucciones en algún lenguaje de programación que indican a un ordenador como realizar una cierta tarea.
El lenguaje que es capaz de ejecutar el ordenador se conoce como código máquina. Consiste en secuencias de instrucciones básicas que el procesador reconoce, codificadas como cadenas de números 1 y 0 (sistema binario). En los inicios de la computación se programaba directamente en código máquina, pero escribir programas así resultaba demasiado complicado, y también era difícil entenderlos y mantenerlos una vez escritos. Con el tiempo, se fueron desarrollando lenguajes con una sintaxis más sencilla para el programador, similar al lenguaje natural, para facilitar el trabajo. Se les suele denominar lenguajes de alto nivel.
Entre los lenguajes de programación de alto nivel más populares tenemos C, C#, Java, y otros. Pero Python es el lenguaje de uso general más utilizado actualmente, y es el que aprenderemos en esta asignatura.
Características del lenguaje Python
Python es un lenguaje interpretado, no compilado, ¿y qué significa esto?. Cuando escribimos un programa en un lenguaje de alto nivel se requiere que luego sea traducido a código máquina, que es lo que puede ejecutar el procesador. En función de cómo se realice esta «traducción» tendremos lenguajes Interpretados o Compilados:
![No description has been provided for this image](notebooks-img/compilado.png)
Los lenguajes interpretados se basan en un programa llamado intérprete, que va leyendo el código línea por línea ejecutando en el momento las instrucciones del programa. Esto permite una ejecución más sencilla en diferentes sistemas operativos, y detectar errores de manera inmediata, pero hace que el programa sea más lento en su ejecución. Por otro lado, los lenguajes compilados pasan todo el programa a lenguaje máquina mediante un compilador, creando un archivo ejecutable que solo funciona en el sistema operativo donde se ha compilado, pero que es más rápido en su ejecución.
En cuanto a la forma de escribir las instrucciones en Python su sintaxis es muy limpia y fácil, lo que lo hace idóneo para aprender a programar. Además, es gratuito y de código abierto. Esto implica que existen multitud de programas accesibles en internet, documentación y otros tutoriales de ayuda.
Finalmente, destacar que permite utilizar diferentes librerías (colecciones de funciones) hechas por otros, lo que aumenta las posibilidades de aplicación y permite realizar programas más complejos de manera sencilla
Estructura de un programa en Python
Un programa de Python es un fichero de texto que contiene expresiones y sentencias del lenguaje Python. Esas expresiones y sentencias se consiguen combinando los elementos básicos del lenguaje.
El lenguaje Python está formado por elementos de diferentes tipos:
- palabras reservadas (keywords)
- funciones integradas (built-in functions)
- literales
- operadores
- delimitadores
- identificadores
A medida que avancemos en la asignatura iremos viendo estos conceptos.
Para que un programa se pueda ejecutar, el programa debe ser sintácticamente correcto, es decir, utilizar los elementos del lenguaje Python respetando su reglas de "ensamblaje". Esas reglas se irán viendo a lo largo del curso. Obviamente, que un programa se pueda ejecutar no significa que un programa vaya a realizar la tarea deseada, ni que lo vaya a hacer en todos los casos.
Pero es importante tener a mano documentación del lenguaje para poder consultar dudas de manera autónoma. Por ejemplo:
En la documentación oficial de Python donde se encuentra una descripción mucho más detallada y completa (https://docs.python.org/3/library/index.html) En inglés encontraréis materiales gratuitos más completos (https://greenteapress.com/wp/think-python-2e/) Pero existen libros y webs gratuitas en español que os pueden ser de utilidad (https://pythones.net o https://ellibrodepython.com)
Hola mundo
Cuando se aprende un lenguaje de programación nuevo, es habitual empezar con un programa de ejemplo que simplemente muestra la frase "hola mundo". Por simple que sea, esta única línea de código nos asegura que sabemos cómo imprimir una cadena en la pantalla y cómo ejecutar código dentro de las celdas de un cuaderno.
# Prueba tu primer programa en Python
print("Hola Mundo!")
Hola Mundo!
Comentarios en Python
Además de escribir código, es importante añadir comentarios. Los comentarios ayudan a otros a entender nuestro código, y a uno mismo cuando vuelve a utilizar su propio programa tiempo después de haberlo hecho.
Para escribir comentarios en Python, se utiliza el símbolo #
antes del texto del comentario. Cuando se ejecute el programa, Python ignorará todo lo que esté a la derecha de #
en la misma línea.
# Ejemplo del uso de comentarios
print("Hola Mundo!") # Esta línea imprime una cadena (string)
# print("Hola")
Hola Mundo!
Después de ejecutar el código anterior, el texto Esta línea imprime una cadena (string)
no aparece en pantalla, porque es un comentario, y se ignora.
Aunque la segunda línea print("Hola")
sí es código Python (y no un texto de ayuda), tampoco se ejecuta al estar precedida por el símbolo (#
). Tener líneas de codigo comentadas es habitual al programar, ya que nos permite probar diferentes soluciones de manera sencilla (quitando o poniendo #
).
Recomendamos que pongáis comentarios al principio de vuestros ejercicios, incluyendo el enunciado del mismo, de forma que podáis saber qué hace el programa de manera sencilla.
Errores en Python
Cuando escribimos mal el código un programa, desde un punto de vista sintáctico, Python muestra un mensaje de error. Es importante leer los mensajes de error cuidadosamente para entender dónde se ha cometido el error y cómo se puede corregir.
Por ejemplo, si se escribe frint
en lugar de print
, el error que se muestra es el siguiente:
# Error en print
frint("Hola mundo")
--------------------------------------------------------------------------- NameError Traceback (most recent call last) Cell In[6], line 3 1 # Error en print ----> 3 frint("Hola mundo") NameError: name 'frint' is not defined
El mensaje de error indica:
- en qué linea ocurre el error, y
- el tipo de error (NameError)
Python intentó ejecutar la función frint
, pero no pudo porque no es ninguna función integrada ni tampoco la hemos creado nosotros.
Los diferentes errores muestran mensajes diferentes. Por ejemplo, el siguiente código muestra un error de sintaxis. ¿Sabrías dónde?
# Trata de encontrar el error
print("Hello, Python!)
Cell In[7], line 3 print("Hello, Python!) ^ SyntaxError: unterminated string literal (detected at line 3)
Tipos de datos en Python
Python soporta muchos tipos diferentes de datos. Los tipos de datos más comunes son tres: cadenas, números enteros y números reales. Cada vez que escribes palabras (texto) en Python, estás usando cadenas de caracteres. Por otro lado, los números sin parte decimal son enteros y los que tienen parte decimal son reales.
Veamos algunos ejemplos
# Entero
11
# Real
2.14
# Cadena
"Hola Python!"
Puedes hacer que Python te diga el tipo de dato de una expresión utilizando la función type()
. Python se refiere a los números enteros como int
, a los números reales como float
y a las cadenas de caracteres como str
.
# Type de 12
type(12)
# Type de 2.14
type(2.14)
# Type de "Hola Python!"
type("Hola Python!")
Convertir un tipo de dato en otro
Puedes cambiar el tipo de dato en Python; esto se llama typecasting. Por ejemplo, puedes convertir un entero en un float (por ejemplo, 2 en 2,0).
# Convertir 2 a float
float(2)
# Convertir 2 a float y comprobar el nuevo tipo
type(float(2))
Cuando convertimos un entero a un real, no cambiamos realmente el valor del número. Sin embargo, si convertimos un real a un entero, normalmente perderemos información. Por ejemplo, si convertimos 1.1 en un entero, obtendremos 1 y perderemos la información decimal (es decir, 0.1):
# Casting de 1.1 a entero pierde información
int(1.1)
Convertir cadenas en enteros y reales
A veces, podemos tener una cadena que contenga un número en su interior. Si este es el caso, podemos convertir esa cadena que representa un número en un entero utilizando int()
:
# Convertir una cadena en un entero
int('1')
Pero si intentas hacerlo con una cadena que no coincide perfectamente con un número, obtendrás un error.
# Convertir una cadena en un entero con error
int('1 or 2 people')
También podemos convertir cadenas que contengan reales en datos de tipo float
# Convertir la cadena "1.2" en un número real
float('1.2')
'1.2'
) o dobles("1.2"
), pero no mezcladas ("1.2'
)
Convertir números en cadenas
# Convertir un entero en una cadena
str(1)
# Convertir un número real en una cadena
str(1.2)
Tipo de dato Boolean (bool)
Boolean es otro tipo importante en Python. Un dato de tipo Booleano puede tomar uno de dos valores: True
or False
. Las expresiones lógicas que veremos en temas posteriores devuelven este tipo de dato
Expresiones
Y a continuación mostramos ejemplos de su uso en diferentes expresiones matemáticas:
# Suma simple
43 + 60 + 16 + 41
# Resta simple
50 - 60
-10
# Multiplicación simple
5 * 5
25
# Division simple
25 / 5
5.0
# Division simple
25 / 6
4.166666666666667
Ojo, existen operadores especiales que debemos conocer, y veremos en clase de teoría. Por ejemplo, podemos usar la doble barra para hacer una división entera:
# División entera simple
25 // 5
5
# División entera simple
25 // 6
4
Python sigue convenciones matemáticas estándar de prioridad de operadores cuando evalúa expresiones matemáticas. En el siguiente ejemplo, se añade 30 al resultado de la multiplicación (es decir, 120)
# Expresión matemática
30 + 2 * 60
150
Las expresiones entre paréntesis tienen prioridad, y es recomendable usarlos siempre para evitar errores:
# Expresión matemática
(30 + 2) * 60
1920
Variables
En todos los lenguajes de programación se utilizan variables para almacenar valores que se podrán reutilizar después.
El operador básico que tienes que comprender para utilizar variables es el operador = que asigna a la variable de la izquierda el contenido que le ponemos a la derecha. Por ejemplo:
# Guardar el resultado de la suma en una variable x
x = 43 + 60 + 16 + 41
# Imprimimos el valor de x
x
160
# Utilizamos el valor almacenado en x en otra expresión
y = x / 60
y
2.6666666666666665
Podemos sobreescribir el valor de una variable con un nuevo valor, que es una expresión de gran utilidad:
# Sobreescribir x con su división entre 60
x = x / 60
x
2.6666666666666665
Es importante utilizar nombres de variables adecuados, es decir, representativos de lo que almacenan:
# Nombres adecuados de variables
total_min = 43 + 42 + 57 # Duración total de los partidos en minutos
total_min
142
# Nombres adecuados de variables
total_horas = total_min / 60 # Duración total de los partidos en horas
total_horas
2.3666666666666667
# Expresión anterior completa
total_horas = (43 + 42 + 57) / 60 # Horas totales en una sola expresión
total_horas
2.3666666666666667
Podemos asignar el nombre que queramos a una variable, respetando no usar las palabras reservadas de Python ni espacios, guiones o números al principio. Por ejemplo:
# Válido
_variable = 10
vari_able = 20
variable10 = 30
variable = 60
variaBle = 10
# No válido
2variable = 10
var-iable = 10
var iable = 10
Cell In[23], line 9 2variable = 10 ^ SyntaxError: invalid decimal literal