No description has been provided for this image

Primeros pasos en Python

Contenidos

  • Introducción a Python
  • Tipos de datos
  • Expresiones y variables

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

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.


[Tip]: Para ejecutar el código de Python en las celdas de un cuaderno de manera más rápida, haz click en la celda para seleccionarla y presiona Shift + Enter.

In [4]:
# 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.

In [5]:
# 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:

In [6]:
# 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:

  1. en qué linea ocurre el error, y
  2. 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?

In [7]:
# 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.

No description has been provided for this image

Veamos algunos ejemplos

In [ ]:
# Entero

11
In [ ]:
# Real

2.14
In [ ]:
# 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.

In [ ]:
# Type de 12

type(12)
In [ ]:
# Type de 2.14

type(2.14)
In [ ]:
# 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).

In [ ]:
# Convertir 2 a float

float(2)
In [ ]:
# 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):

In [ ]:
# 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():

In [ ]:
# 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.

In [ ]:
# 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

In [ ]:
# Convertir la cadena "1.2" en un número real

float('1.2')

[Tip:] Fíjate que las cadenas se pueden representar con comillas simples ('1.2') o dobles("1.2"), pero no mezcladas ("1.2')

Convertir números en cadenas

In [ ]:
# Convertir un entero en una cadena

str(1)
In [ ]:
# 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 variables


Expresiones

Las expresiones en Python incluyen operaciones entre tipos de datos compatibles (por ejemplo, enteros y reales). Por ejemplo, podemos realizar operaciones aritméticas básicas. A continuación, condensamos en la siguiente tabla los operadores más comunes con un ejemplo, donde x=10 y y=3.

No description has been provided for this image

Y a continuación mostramos ejemplos de su uso en diferentes expresiones matemáticas:

In [ ]:
# Suma simple

43 + 60 + 16 + 41
In [8]:
# Resta simple

50 - 60
Out[8]:
-10
In [9]:
# Multiplicación simple

5 * 5
Out[9]:
25
In [10]:
# Division simple

25 / 5
Out[10]:
5.0
In [11]:
# Division simple

25 / 6
Out[11]:
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:

In [12]:
# División entera simple

25 // 5
Out[12]:
5
In [13]:
# División entera simple

25 // 6
Out[13]:
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)

In [14]:
# Expresión matemática

30 + 2 * 60
Out[14]:
150

Las expresiones entre paréntesis tienen prioridad, y es recomendable usarlos siempre para evitar errores:

In [15]:
# Expresión matemática

(30 + 2) * 60
Out[15]:
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:

In [16]:
# Guardar el resultado de la suma en una variable x

x = 43 + 60 + 16 + 41
In [17]:
# Imprimimos el valor de x

x
Out[17]:
160
In [18]:
# Utilizamos el valor almacenado en x en otra expresión

y = x / 60
y
Out[18]:
2.6666666666666665

Podemos sobreescribir el valor de una variable con un nuevo valor, que es una expresión de gran utilidad:

In [19]:
# Sobreescribir x con su división entre 60

x = x / 60
x
Out[19]:
2.6666666666666665

Es importante utilizar nombres de variables adecuados, es decir, representativos de lo que almacenan:

In [20]:
# Nombres adecuados de variables

total_min = 43 + 42 + 57 # Duración total de los partidos en minutos
total_min
Out[20]:
142
In [21]:
# Nombres adecuados de variables

total_horas = total_min / 60 # Duración total de los partidos en horas
total_horas
Out[21]:
2.3666666666666667
In [22]:
# Expresión anterior completa

total_horas = (43 + 42 + 57) / 60  # Horas totales en una sola expresión
total_horas
Out[22]:
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:

In [23]:
# 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
In [ ]: