tutorial_de_python

¡Esta es una revisión vieja del documento!


Tutorial de Python

Este tutorial fue escrito por ~sdemingo.

Python es un lenguaje de programación de alto nivel cuya filosofía hace hincapié en la legibilidad de su código fuente.

Es sencillo de aprender por lo que es ideal para enseñar a programar

Python fue creado por Guido van Rossum a finales de los años 80 en un centro de investigación de Países Bajos. Su nombre viene del grupo de cómico británico Monty Python.

Un programa no es más que un conjunto de instrucciones que el ordenador ejecutará de forma secuencial, desde la primera a la última.

Para escribir programas la herramienta básica es un editor de texto, donde podrás escribir las instrucciones que quieres que formen parte de tu programa. Tu programa, además de instrucciones manejará también datos, que podrán ser datos internos del propio programa o bien introducidos por el usuario.

Python es un lenguaje de programación interpretado. Esto quiere decir que el programa que tu escribirás en un fichero de texto no será compilado por ningún programa externo sino que será leído y procesado por un intérprete de Python. Para que el sistema ejecute las instrucciones de tu programa no vale con indicarle que quieres ejecutarlo. A quien realmente ejecutas es al intérprete de Python, y es a el, a quien le dices que lea tu programa.

Utiliza tu editor de textos favorito para crear el fichero hola.py.

Encontrarás también los ficheros de código fuente de este tutorial en la Biblioteca de Programas.

Por ejemplo, introduce en tu terminal:

nano hola.py

Incorpora al fichero la siguiente instrucción:

print ("hola mundo cruel!")

Guarda los cambios (Ctrl+o) y sal del editor GNU Nano (Ctrl+x).

Para ejecutar un programa escrito Python, debes lanzar el intérprete de Python e indicarle como argumento el nombre de fichero de tu programa. En este ejemplo podrás hacerlo de esta forma:

python3 hola.py

El sistema compartido interpretará inmediatamente lo programado y te devolverá el resultado:

hola mundo cruel!

¡Has ejecutado tu primer programa de Python con éxito! No pierdas más tiempo y compártelo en nuestro gab!:

gab -m "Soy ~$USER y programé con Python gracias al tutorial de ~sdemingo!"

Una variable es un dato que se almacena en la memoria de nuestro equipo junto a una etiqueta o identificador que usaremos para recuperarlo.

El dato que guardaremos en memoria y al que asignaremos un identificador puede ser de múltiples tipos (enteros, caracteres, etc.) y, tal y como veremos. Según el tipo que sea puede ocupar más o menos memoria.

Una vez que asignemos el dato a este identificador, al que llamaremos a partir de ahora nombre, siempre nos referiremos a este dato en nuestro código a través del mismo. Por ejemplo, vamos a guardar dos datos numéricos en sendas variables y luego mostraremos el resultado de su suma:

    variable1 = 8
    variable2 = 9
    print (variable1 + variable2)

Introduce dicho código en un fichero llamado variables.py y ejecútalo.

python3 variables.py

En tu terminal deberías obtener el resultado de esta operación aritmética de suma:

17

Como se ve, una vez que asignas los valores numéricos a sus respectivos nombres, podrás operar con dichos valores utilizando dichos nombres.

Tipos de datos

En Python podemos manejar datos de muchos tipos diferentes pero, por ahora, vamos a centrarnos solo en los llamados tipos básicos o primitivos. Estos son:

  • Enteros: Representan números enteros (sin parte decimal).
  • Reales: Representan números con parte decimal. Requieren indicar ambas partes, la decimal y la entera separada por el caracter ..
  • Booleanos: Representan los dos tipos de valores lógicos propios de la lógica booleana (True y False).
  • Cadenas de caracteres (o “strings”): Como su nombre indica son cadenas de caracteres alfanuméricos. Sus valores literales deben encerrarse entre comillas.

Más adelante trabajaremos además con algún otro tipo de dato más. Tipos algo más complejos como son las listas, las tuplas y los diccionarios.

A continuación veamos un ejemplo de creación de una variable de cada uno de los tipos descritos arriba.

varEntera=784
varReal=345.23
varBooleana=False
varCadena="esto es una cadena"

Para operar con variables es obligatorio que estas pertenezcan al mismo tipo. Para ello a menudo deberás realizar conversiones de tipo. Para convertir una variable de un tipo en otro utiliza el nombre del tipo y entre paréntesis el nombre de la variable que queremos convertir.

Por ejemplo, imagina que hemos declarado una variable de tipo string con la cadena de caracteres “834” y la queremos sumar un valor numérico de 9.

entero=9
cadena="834"
print (entero + cadena)

Si ejecutas el código anterior el intérprete te devolverá un error a tu terminal, que termina con el texto:

TypeError: unsupported operand type(s) for +: 'int' and 'str'

El intérprete nos está indicando que no podemos operar usando el operador aritmético de suma con valores de diferente tipo. Hemos de convertir la variable entero a cadena de caracteres o bien convertir la variable cadena a un número entero. Usaremos la primera opción usando la expresión str(entero) para convertir el 9 en una cadena de caracteres.

entero=9
cadena="834"
print (str(entero) + cadena)

Ejecutamos el código anterior y obtenemos:

9834

¿Cómo? ¡Esa no es la suma que esperábamos! Realmente el código anterior es perfectamente correcto. Al convertir la variable con valor 9 a cadena de caracteres y usar la suma, estamos operando con dos cadenas de caracteres. Python suma las cadenas de caracteres concatenando una a la otra, por lo que el resultado es el esperado.

"9" + "834"   ->  "9834"

Si ahora probamos a la inversa y convertimos la variable cadena a un valor numérico veremos que el resultado es la suma aritmética que esperábamos inicialmente, esto es el valor numérico 843.

entero=9
cadena="834"
print (entero + int(cadena))

Los operadores permiten operar con variables. Normalmente usaremos otras variables para guardar el resultado de estas operaciones.

Para realizar operaciones arítmeticas con numéros usaremos los operadores clásicos: +, -, * y /. El operador % nos servirá para calcular resto de una división. En relación a la división hemos de tener en cuenta también que la operación de división o / siempre nos retornará un valor de tipo real, jamás un entero.

Para comparar valores primitivos podemos usar los operadores:

  • ==: Indica si los valores son iguales
  • !=: Indica si los valores son diferentes

Para realizar comparaciones entre los valores de dos variables, debemos usar los operadores comunes >,>=,<,, se leen respectivamente mayor, mayor o igual, menor y menor o igual. Estos nos devolverán un valor boolean.

Revisa el fichero operadores.py, ejecutalo y analiza su resultado para entender los operadores en un caso práctico.

Las cadenas de caracteres o strings forman parte de un tipo especial en Python. Son un objeto. Python posee tipos objetos predefinidos dentro de el y permite también que definamos nuestros propios objetos (lo aprenderemos más adelante).

En Python, para operar con un objeto podemos usar funciones asociadas con el y que podremos invocar usando el nombre del objeto en si mismo seguido de la función que queremos invocar sobre el.

Para entender vamos a imaginarnos que tenemos una cadena definida en nuestro código y queremos convertirla toda entera a mayúsculas. Para conseguir esto usaremos la función upper(). La invocaremos sobre la variable de tipo string y guardaremos el resultado en una segunda variable:

    cadena1="Esto es una cadena"
    cadena2 = cadena.upper()
    print (cadena1)
    print (cadena2)

Existen muchos métodos para trabajar con string que podemos invocar sobre ellos. Os pongo a continuación una lista con los principales.

  • count(): Devuelve el número de caracteres
  • endswith(sufijo): Devuelve true si la cadena termina por ese sufijo
  • index(cadena): Devuelve la posición de la primera aparición de la cadena buscada
  • lower(): Convierte la cadena a minúsculas
  • replace(cad1, cad2): Remplaza las apariciones de la cadena cad1 por cad2
  • startswith(): Devuelve true si la cadena comienza por ese prefijo
  • strip(prefijo): Devuelve una versión recortada de la cadena
  • upper(): Convierte la cadena a mayúsculas

Pedir datos al usuario

Solicitar al usuario que introduzca datos a través del teclado es algo básico para que nuestros programas cobren sentido de utilidad. Esto podemos hacerlo fácilmente usando la instrucción input. Junto a la instrucción input podrás adjuntar además un mensaje que indique al usuario qué necesita ingresar.

Luego recogeremos el valor introducido en una variable tal y como se muestra en el ejemplo siguiente:

    numero = input("Introduce un número cualquiera: ")
La función input siempre devuelve una cadena. Si deseas tratar esta variable como otro tipo, evita errores realizando una conversión de tipo como se indicó anteriormente.

El siguiente programa solicita un número al usuario, y le suma otro que el propio programa aportará:

    numero = input("Introduce un número cualquiera: ")
    otro = 8
    print (int(numero) + otro)

Ejercicios

1. Pide un número al usuario y calcula el triple mostrándolo por pantalla. Solución

2. Pide al usuario que te introduzca su nombre y envía un mensaje a la pantalla saludándole. Algo como “Hola Sergio, ¿qué tal estás?” Solución

3. Pide al usuario que te introduzca una frase y cambia todas las apariciones de las letras ‘e’ por ‘E’ y ‘a’ por ‘A’. Solución

Además de los tipos básicos, en Python tenemos tipos más complejos con los que vamos a poder trabajar. Los tipos “avanzados” que vamos a ver en primer lugar serían:

  • Las listas
  • Las tuplas
  • Los diccionarios

En Python una lista es una colección de datos que se agrupan todos bajo un mismo identificador o nombre de variable. Estos datos pueden ser del mismo tipo o de tipos diferentes. Por ejemplo, vamos a guardar cinco números enteros asociados a una sola variable, en lugar de utilizar una para cada uno de ellos:

  numeros = [4,2,23,112,-5]

Una lista puede estar compuesta, como ya hemos dicho, por datos de diferente tipo. Incluso podría estar compuesta por un dato de tipo lista a su vez:

 
  numerosYmas = [4, -2, "hola", 953, True, "si"]
  listaDelistas= [4, -2, [ 9, 8, 2], "ultimo"]
  listaVacia = []

En el ejemplo anterior vemos que el tercer elemento de listaDelistas es una lista. Para acceder a los elementos de una lista usaremos el operador [ ]. Usaremos el nombre de la lista seguido de dicho operador y entre los corchetes meteremos el índice de la lista que queremos consultar. Es muy importante tener en cuenta que los índices siempre empiezan en 0. Por lo que si queremos consultar el tercer elemento de una lista hemos de usar el índice 2. Por ejemplo, para imprimir por pantalla el cuarto elemento de numerosYmas escribiremos print(numerosYmas[5]). En caso de que el índice sea negativo, el acceso será contando desde el final de la lista. Esto es desde la derecha.

Usando un índice de -1 nos llevará al último elemento de la lista.

El acceso a los miembros de una lista puede ser para su consulta o para su modificación. Piensa en el siguiente código:

    print (numerosYmas[5])   // imprime "si"
    numerosYmas[5]="no"
    print (numerosYmas[5])   // imprime "no"

Para añadir miembros a una lista podemos usar el operador + pero hemos de tener en cuenta que los datos de ambos lados del operador deben ser listas. Vamos a añadir un valor de 2 a la lista numerosYmas y lo haremos convirtiendo el 2 e una lista:

  numerosYmas = numerosYmas + [2]

También podemos hacer uso del método append() sobre la variable de tipo lista ejecutando numerosYmas.append(2). El resultado sería similar.

Para eliminar elementos de una lista usaremos la instrucción del seguido del elemento que queremos borrar. Por ejemplo:

    numeros = [10, 20, 30, 40]
    del numeros[1]
    print (numeros)    //imprime [10, 30, 40]

De una lista podemos extraer otra usando el operador [:]. Es lo que se llama rodaja o slice en Inglés. Este operador recibe dos enteros que indican los índices de inicio y de fin de nuestra rodaja Rodajas de listas [:]. El primer índice siempre forma parte de la rodaja mientras que el último nunca hará. La rodaja termina en el anterior a este. Si no indicamos el inicio de la rodaja está toma el inicio de la lista origen y lo mismo pasa con el final y el segundo índice.

    lista = [10, 20, 30, 40, 50, 60]
    print (lista[1:])     // imprime [20, 30, 40, 50, 60]
    print (lista[:3])     // imprime [10, 20, 30]
    print (lista[1:4])    // imprime [20, 30, 40]

Conocer si un valor está o no en una lista puede ser muy útil. Esto nos lo permite el operador in. Con este operador obtendremos un valor booleano que nos indique si el valor está o no:

    lista = [10, 20, 30, 40, 50, 60]
    print (10 in lista)     // imprime True
    print (80 in lista)     // imprime False

Por último, para saber la longitud o número de miembros de una lista usaremos el método len() que invocaremos directamente sobre la variable lista que queramos.

Una tupla en Python es un conjunto de datos que están agrupados. En esto se parecen a la listas pero poseen una diferencia importante. Una tupla, una vez creada no puede ser modificada. No podremos agregarle nuevos elementos ni quitarle uno de los que ya tiene. Tampoco podremos modificar el valor de un elemento interno.

Para definir una tupla indicaremos los elementos que contiene entre paréntesis:

    tupla = (8, "hola", -34)

Para acceder a los componentes usaremos el mismo mecanismo que con las listas. Usando el índice entre corchetes:

    print (tupla[1])      // imprime "hola"

Los diccionarios son también un tipo de datos que nos permitirá agrupar datos sobre una sola variable. Se parecen mucho a las listas pero con una salvedad importante. Podemos modificar el índice asociado a cada valor. Mientras que con las listas, cada valor quedaba asociado a un índice de tipo entero, con los diccionarios podemos hacer que este índice sea de otro tipo.

Estos índices se llaman claves. Es fundamental que una clave no se repita dentro de un mismo diccionario. Veamos un ejemplo que almacena datos numéricos asociados a claves de tipo string:

    temperaturas = {"Madrid": 18, "Bilbao": 19, "Sevilla": 22, "Barcelona": 24}

Con la anterior declaración hemos creado un diccionario llamado temperaturas que guarda el valor numérico de una temperatura media en una ciudad. Como clave del diccionario hemos usado el nombre de la ciudad en formato de string.

Tanto para acceder al valor de una clave como para crear claves nuevas usaremos los corchetes de forma parecida a como haciamos con las listas:

    print (temperaturas["Sevilla"])    // imprime 22
 
    temperaturas["León"] = 14
    print (temperaturas["León"])       // imprime 14

Para saber si existe un valor asociado a una clave en un diccionario usaremos el operador in igual que con las listas:

    print ( "Madrid" in temperaturas) // imprime True

Si queremos crear un diccionario vacío usaremos las llaves sin valores en su interior. Algo como dicVacio = {}.

Ejercicios

1. Crea una lista que contenga varios nombres a tu elección. Pide al usuario un nombre por teclado y muestra por pantalla si es cierto o no que ese nombre está en la lista. [[Ej3a.py|Solución]]
  • tutorial_de_python.1668743834.txt.gz
  • Última modificación: 2022/11/18 03:57
  • por peron