Python Para Principiantes (I) - Conceptos Básicos

Taller De Python - CSL

Autores: Juan Manuel, Alexis y Víctor

Índice:


¿Qué es Python?

Python es un lenguaje de programación de propósito general.

Es interpretado, esto quiere decir que necesita de un programa (intérprete) que convierta las instrucciones del lenguaje Python a lenguaje máquina. Este programa debe estar instalado en la maquina en la cual se correrá el programa.

Recordemos que las computadoras solo entienden un lenguaje conocido como código máquina.

Es portable, lo que significa que podemos correrlo sobre distintas computadoras sin necesidad de hacerle modificaciones o bien con muy pocas.

De tipado dinámico, hace hincapié en la sintaxis favoreciendo un código más legible. No necesitamos explicitar los tipos de datos como en C++ o Java.

Versiones de Python

Actualmente hay dos versiones de Python en uso: Python 2.7 y Python 3.x. Python 2.7 dejó de recibir soporte el 1 de enero de 2020, por lo tanto usaremos Python 3.x.

Como se mencionó con anterioridad, Python necesita un intérprete. Hay muchos intérpretes de Python, los cuales tienen distintas implementaciones, nosotros usaremos al menos dos: Cpython, quizás el más popular, e Ipython.

Instalación

En casi todas las distribuciones GNU/Linux viene instalado, lo podemos probar corriendo el siguiente comando:

1
$ python3

En caso de que no se encuentre instalado, debemos realizar la instalación por medio del gestor de paquetes de nuestra distribución.

Para ubuntu/debian y derivadas lo instalamos con:

1
$ sudo apt install python3

Conociendo al intérprete interactivo

Ahora vamos a conocer al intérprete interactivo.

Para ello abrimos una terminal y ejecutamos:

1
$ python3

Cuando el intérprete este listo para recibir instrucciones nos avisará mediante el signo > (mayor), el cual se dibujará tres veces en la pantalla.

1
2
3
4
Python 3.8.2 (default, Apr  8 2020, 14:31:25) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Ahora vamos a probar cálculos simples, por ejemplo:

1
2
3
4
5
6
7
8
>>> 5+9
14
>>> 8-6
2
>>> 9/5
1.8
>>> 12/6
2.0

Noción de algoritmo

Un algoritmo es un conjunto de instrucciones, finitas y ordenadas que conducen a la resolución de un problema.

Por ejemplo, el algoritmo de Tremaux sirve para encontrar la salida de un laberinto:

Lo primero que hay que hacer es marcar el camino que se va siguiendo, 
y seguir estos pasos:
1.  No siga el mismo camino dos veces.
2.  Si llega a un cruce nuevo, no importa qué camino siga.
3.  Si un camino nuevo lo lleva a un cruce viejo, o a un callejón sin
salida, retroceda hasta la entrada del camino.
4.  Si un camino viejo lo lleva a un cruce viejo, tome un camino
nuevo, y si no lo hay, tome cualquiera.
Si se siguen estos pasos, aunque es posible que lleve horas, este
sistema le llevará hasta la salida del laberinto, y si no la hay, de
nuevo hasta la entrada.

Si tomamos esta noción y la llevamos a la programación podríamos decir que un algoritmo es: “Decirle a la computadora una serie de pasos en un determinado orden para que resuelva problemas."

Primer programa

Ahora vamos a escribir nuestro primer programa, hola mundo, para ello haremos uso de la instrucción print().

Con el intérprete abierto, escribiremos lo siguiente:

ACLARACIÓN: A partir de ahora veremos y probaremos distintos fragmentos de código, lo indicado después del símbolo »> son las instrucciones que ustedes pueden ejecutar y probar, por el contrario, la línea que no tenga dicho símbolo representa lo que muestra el intérprete en pantalla, por lo tanto, no hay que ingresarla en el programa.

1
2
>>> print("Hola Mundo")
Hola Mundo

Más adelante, veremos en profundidad el uso de la función print(). De momento, pueden probar cambiar la frase y que muestre distintos mensajes.

Operaciones Simples

Suma y resta

Podemos realizar operaciones simples directamente por ejemplo, para suma usamos el signo más (+) y para la resta usamos el signo menos (-):

1
2
3
4
>>>95+8+1
104
>>>50-25
25

Producto

O multiplicación (recordar que el intérprete resolverá la operación que encuentre entre paréntesis primero, y luego, el resto de las operaciones). Para multiplicar usamos el asterisco (*)

1
2
3
4
>>> 2*(5+5)
20
>>> 2*5+5
15

Números negativos

Si queremos hacer uso de un número negativo, simplemente, le agregamos el signo menos (-) adelante del mismo.

1
2
3
4
>>> -5+2
-3
>>> -15+1
-14

División

Para dividir un número usamos la barra (/)

1
2
3
4
5
6
>>> 42/2
21.0
>>> 100/2
50.0
>>> 41/3
13.666666666666666

Recuerden que la división por cero está prohibida. Si la hacemos nos dará un error.

1
2
3
4
>>> 12/0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero

Observen que se nos avisa del siguiente error: ZeroDivisionError: division by zero Este tipo de mensajes es muy útil para saber que ocurrió, resulta indispensable al programar reconocerlos adecuadamente.

Exponentes

Para calcular un exponente usamos dos asteriscos, si quisiéramos saber cual es el resultado de 4 elevado al cuadrado hacemos:

1
2
>>> 3**2
9

Resto

Usamos el símbolo de porcentaje (%) por ejemplo el resto de la división de 10/2 es cero, lo comprobamos:

1
2
>>> 10%2
0

Cociente

Para el cociente usamos doble barra (//)

1
2
>>> 10//2
5

Ejercicios

  1. Calcule el producto de 8 por 8, luego súmele 4096 dividido 4 y reste 64.
  2. Calcule el cociente de 10462 dividido 2 y luego reste 231.
  3. Calcule el resto de 566 dividido 4, luego eleve ese valor a su cuadrado.
  4. Calcule el cociente de 768 dividido 8, luego súmele 32.

Recuerde: debe hacer uso correcto de los paréntesis, de otra manera obtendrá resultados erróneos. Todas las operaciones se pueden resolver en una sola línea.

Tipos de datos

Números enteros o Int

Los números enteros son: el conjunto de los números naturales 1,2,3,… sus opuestos -1,-2,-3,… y el 0.

Con el intérprete abierto, podemos realizar operaciones directamente:

1
2
3
4
5
6
7
8
>>> 9+5
14
>>> 9-59
-50
>>> 8*2
16
>>> 2**4
16

La división de números enteros es un caso especial, siempre dará como resultado un número real.

1
2
3
4
>>> 15/3
5.0
>>> 5/3
1.6666666666666667

Números reales/Flotantes o Floats

Los números reales, son conocidos como Floats. Son números que tienen una parte entera y otra decimal. Por ejemplo 2.5, 3.1419, etc.

1
2
>>> 3.2
3.2

O bien como resultado de una operación:

1
2
>>> 3.2*2
6.4

Como mencionamos anteriormente, podemos obtener un real desde la división de dos enteros.

1
2
>>> 20/5
4.0

Python también soporta números complejos, binarios, octales y hexadecimales, pero de ellos no nos vamos a ocupar en este curso

Cadenas de caracteres

Llamamos strings a las cadenas de caracteres, dicho más simple: a un texto o frase. Para crear un string debemos usar comillas dobles (") o simples (') da lo mismo.

Ejemplo:

1
2
3
4
>>>"Club de Software Libre"
'Club de Software Libre'
>>>'Gnu-Linux'
'Gnu-Linux'

También un solo carácter puede ser considerado un string

1
2
>>>"w"
'w'

Caracteres especiales

Hay algunos caracteres que no podemos usar directamente, por ejemplo si quisiéramos escribir: ““Átale, demoníaco Caín, o me delata” es un palíndromo”

1
2
3
4
5
>>> ""Átale, demoníaco Caín, o me delata" es un palíndromo"
  File "<stdin>", line 1
    ""Átale, demoníaco Caín, o me delata" es un palíndromo"
      ^
SyntaxError: invalid syntax

Este error se debe a que estamos usando comillas dobles dentro de las comillas dobles (Perdón por la redundancia). Para arreglarlo debemos anteponer una barra invertida (\) frente a estos caracteres especiales.

1
2
>>> "\"Átale, demoníaco Caín, o me delata\" es un palíndromo"
'"Átale, demoníaco Caín, o me delata" es un palíndromo'

Operaciones con cadenas de caracteres

Concatenar

Concatenar es unir dos o más cadenas de caracteres. Para ello usamos el + (signo más)

1
2
>>> "Perro" + " y " + "Gato"
'Perro y Gato'

Recuerde: No se puede concatenar números enteros.

Es importante señalar que si usamos un número entre comillas por ejemplo “2”, el mismo será tratado como un carácter y no como un número (entero o real), por lo tanto soporta las mismas operaciones que cualquier otro carácter o cadena de caracteres.

1
2
>>> "2" + "3"
'23'

Uso de la función print() en cadenas.

Puede usar la función print() para mostrar en pantalla cadenas. Para ello, debemos escribir dentro de los paréntesis la cadena (entre comillas).

Ejemplo.

1
2
>>> print("Esto es una cadena")
Esto es una cadena

Otra opción, es mostrar mediante print() la concatenación de dos o más cadenas.

Ejemplo:

1
2
>>> print("Lenguaje: " + "Python")
Lenguaje: Python

Repetir cadenas

Si queremos imprimir muchas veces el mismo texto resulta conveniente usar el operador * seguido de la cantidad de veces que queremos repetir la palabra o frase, por ejemplo:

1
2
>>> print("Tres "*3)
Tres Tres Tres 

Las cadenas no pueden ser multiplicadas por otras cadenas

1
2
3
4
>>> print("Tres"*"Tres")
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'str'

Tampoco podemos usar un número real

1
2
3
4
>>> print("Tres"*3.0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'float'

Ejercicios

  1. Muestre en pantalla su nombre/apodo.
  2. Muestre en pantalla el resultado de concatenar “Club”, “de”, “software”, “libre”
  3. Muestre en pantalla el resultado de concatenar “Hoy”, “es”, “sábado” tres veces.
  4. Muestre en pantalla el texto: Cortazar dijo: “La cultura es el ejercicio profundo de la identidad”.

Recuerde: Use la función print() para mostrar en pantalla.

Corroborar tipo de dato

Ahora que ya conocemos los tipos de datos fundamentales, veamos el uso de la función type()

Esta función nos devuelve el tipo de dato que le estamos pasando, se usa de la siguiente manera:

1
2
3
4
5
6
>>> type(1.33)
<class 'float'>
>>> type(4)
<class 'int'>
>>> type("Hola")
<class 'str'>

Comentarios en el código

Los comentarios en código sirven para escribir aclaraciones o explicaciones. El intérprete simplemente los ignora. Se pueden escribir usando el símbolo almohadilla (#)

1
>>> #Esto es un comentario

Variables

Concepto, creación y asignación

Este concepto es fundamental a la hora de programar. Podemos pensar en una variable como un contenedor de datos (Números, cadenas, etc). Una variable nos permite almacenar un valor el cual estará asignado a un nombre de variable. En el siguiente ejemplo voy a crear una variable, de nombre “n” y le voy a asignar el valor 10.

1
>>> n = 10

La asignación no produce ninguna salida. De ahora en adelante, cada vez que usemos “n” será lo mismo que usar el valor que tiene asignado, es decir el número entero 10. Esto se puede corroborar usando la función print()

1
2
>>> print(n)
10

Variable a lo largo de un programa

Una asignación es darle un valor a una variable, ahora bien, este valor puede cambiar a lo largo de nuestro programa.

1
2
3
4
5
6
>>> i = 14
>>> print(i)
14
>>> i="hola"
>>> print(i)
hola

Recomendación: No es buena practica cambiar los tipos, se recomienda siempre mantener el mismo tipo a lo largo de la ejecución, el valor puede cambiar sin ningún inconveniente.

Nombres de las variables

Los nombres de las variables pueden contener letras, números y guiones bajos.

1
2
3
>>> numeroPi = 3.14
>>> iva = 21
>>> _texto = "10% de descuento"

Queda prohibido comenzar el nombre de una variable con un número.

1
2
3
4
5
>>> 2daVariable = 231
  File "<stdin>", line 1
    2daVariable = 231
     ^
SyntaxError: invalid syntax

Recuerden: Python, en cuanto a las variables, es lo que se conoce como caso- sensitivo. Esto quiere decir que discrimina mayúsculas de minúsculas. No es lo mismo “apellido” que “Apellido”

Nombres que están reservados por el lenguaje

La siguiente lista representa nombres que están reservados por el lenguaje, por lo tanto, las variables no se pueden llamar de esa manera.

and - except - lambda - with - as - finally - nonlocal - while - assert - false - None - yield - break for - not - class - from - or - continue - global - pass - def - if - raise - del - import - return - elif - in - True - else - is - try

Un poco más sobre variables

Una variable sin asignar nos dará un error.

1
2
3
4
>>> bar
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'bar' is not defined

Si en algún momento queremos borrar una variable porque no la usamos más debemos usar la función del()

1
2
3
4
5
6
7
8
>>> a = 1023
>>> print(a)
1023
>>> del (a)
>>> print(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

En el ejemplo anterior, creamos una variable de nombre “a” le asignamos el valor 1023, lo mostramos en pantalla mediante la función print() y luego borramos a dicha variable, cuando la queremos invocar nuevamente nos da un error, ya que al borrarla, “deja de existir”.

A partir de este momento trabajaremos con variables.

Ejercicios

  1. Crear una variable de nombre num1 y asigne el valor 10 a la misma, mostrarla en pantalla.
  2. Realice lo siguiente:
  • Crear una variable x de valor 10.
  • Crear una variable y de valor 90.
  • Muestre en pantalla el resultado de la suma entre ambas.
  1. Realice lo siguiente:
  • Crear una variable num1 y asigne el valor 2.5 en ella.
  • Crear una variable num2 y asigne el valor 2 en ella.
  • Crear una variable num3 y asigne como valor el producto entre num1 y num2.
  • Muestre en pantalla num3.
  1. Crear dos variables, una de ellas contiene la frase “Libertad 0: " y la otra “La libertad de ejecutar el programa como se desee, con cualquier propósito”. Muestre en pantalla el resultado de la concatenación de ambas variables.

Entradas y Salidas

Salidas

Para generar salidas (mostrar en pantalla información o datos) necesitamos hacer uso de la función print(). print() puede mostrar texto (cadenas de caracteres), datos numéricos (reales, enteros, etc) y también, mostrar como salida el resultado de una operación. Para el caso del texto, el mismo debe ir entre comillas (simples o dobles, da igual).

1
2
>>> print ("Mi texto")
Mi texto

Para el caso de un valores numérico:

1
2
3
4
>>> print(23)
23
>>> print(324.42)
324.42

Y para el caso de una operación podemos hacer lo siguiente:

1
2
>>> print(100/25)
4.0

Lo más común es que trabajemos con variables, para mostrarlas en pantalla bastará con que a la función print() le enviemos la variable que queremos mostrar.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
>>> # asigno un 4 a la variable con nombre a
>>> a = 4
>>> print(a)
4
>>> # asigno el resultado de una operacion a b
>>> b = 8/6
>>> print(b)
1.3333333333333333
>>> # asigno cadenas
>>> cadena1 = "Hola"
>>> cadena2 = " Mundo"
>>> print(cadena1 + cadena2)
Hola Mundo

También podemos combinar textos y variables, simplemente lo separamos con una coma:

1
2
3
>>> num1 = 32
>>> print ("La variable num1 es", num1)
La variable num1 es 32

Entradas

Hasta el momento hemos visto ejemplo donde los valores se encuentran “cargados” en el código pero ¿Que ocurre si queremos cargar valores de manera manual? Dicho de otro modo, que sea el usuario quien ingrese esos valores. Bien, este escenario, que es de lo más común, lo vamos a resolver con el uso de la función input()

Para realizar entradas de datos usamos la función input() Por ejemplo:

1
2
3
4
5
6
>>> # la variable "a" se va a "cargar" con el valor que el usuario ingresa
>>> # en pantalla muestra el mensaje que se ingrese entre los paréntesis
>>> a = input("Ingrese un valor: ")
Ingrese un valor: 23
>>> print(a)
23

Existe un pequeño inconveniente: el dato capturado va a ser del tipo str, una cadena de caracteres, motivo por el cual solo podrá soportar las operaciones destinadas a este tipo de dato, si lo quisiéramos tratar como un número no podemos.

Convertir tipos de datos

Para convertir los datos a otro tipo, Python tiene definidas las siguientes funciones: int(), float(),str()

Para convertir un entero a cadena:

1
2
3
4
5
6
7
8
9
>>> # Definimos una variable numero y le asignamos el valor 101
>>> numero = 101
>>> # Vemos que se trata de un tipo int con type
>>> type (numero)
<class 'int'>
>>> # Convertimos a str
>>> numero = str(numero)
>>> type(numero)
<class 'str'>

Para convertir una cadena a entero:

1
2
3
4
5
6
>>> valores = "21323"
>>> type(valores)
<class 'str'>
>>> valores = int(valores)
>>> type(valores)
<class 'int'>

Esta es la forma para trabajar con los distintos tipos de datos que necesitemos convertir. Volviendo al caso del input() si necesitamos “capturar” el dato como un int, resulta buena idea hacerlo así:

1
2
3
4
>>> num = int(input("Ingrese un número "))
Ingrese un número 23
>>> print("Su número más uno es igual a: ",num+1)
Su número más uno es igual a:  24

El mismo ejemplo con un float

1
2
3
4
>>> num = float(input("Ingrese un número "))
Ingrese un número 33.6
>>> print("Su número más uno es igual a: ",num+1)
Su número más uno es igual a:  34.6

Nótese como vamos agrupando funciones adentro de otras funciones. El intérprete primero ejecutará el paréntesis interior que contiene a la función input, después, el paréntesis exterior -donde se convierte el valor ingresado a entero- y por último, asigna el valor entero a la variable num

Operadores de asignación

Estos operadores nos sirven para abreviar código.

1
2
3
4
5
6
>>> x = 1
>>> print(x)
1
>>> x +=4
>>> print(x)
5

En este caso, lo que hacemos es lo siguiente:

  • Asignamos el valor 1 a la variable de nombre “x”.
  • Mostramos en pantalla el valor de x mediante print() .
  • Luego usamos un operador de asignación (+=), el mismo va a sumarle 4 a nuestra variable x.
  • La mostramos en pantalla.

Es decir:

1
>>> x +=4

es lo mismo que:

x = x + 4

También podemos hacerlo con la resta, multiplicación o división.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
>>> #Ejemplo de resta
>>> x = 10
>>> x -=1
>>> print(x)
9
>>> #Multiplicación
>>> x *=2
>>> print(x)
18
>>> #División
>>> x /=2
>>> print(x)
9.0

Funciones

Las funciones son subprogramas -pequeños programas que tienen alguna funcionalidad determinada-, el lenguaje python trae ciertas funciones definidas en lo que se conoce como “Biblioteca Estándar”.

Algunas de esas funciones ya las conocemos, print(), input(), str().

Hay más funciones que estas presentadas y las iremos viendo en profundidad a medida que avancemos con el taller.

Módulos

Python, tiene muchísimas funciones y las mismas están organizadas en formas de módulos. Un módulo es un conjunto de funciones para hacer alguna tarea específica.

El modulo math agrupa un conjunto de funciones matemáticas.

Para decirle al intérprete que vamos a usar un módulo debemos hacer uso de la palabra reservada import seguida del nombre del módulo.

1
2
3
4
5
6
7
8
>>> import math
>>> pi = math.pi
>>> print(pi)
3.141592653589793
>>> num1 = 9
>>> raiz = math.sqrt(num1)
>>> print(raiz)
3.0

Este es otro tópico que veremos con más detalle en los próximos encuentros.

Usando un IDE

Ya tenemos los conocimientos básicos del lenguaje podemos avanzar y usar un IDE.

Un IDE es entorno de desarrollo integrado. Un programa. El mismo nos provee, a los desarrolladores, de herramientas para facilitar la creación de nuestros programas.

Nosotros vamos a usar el Spyder Ide.

En nuestro taller ya se encuentra instalado, pueden lanzarlo desde el menú del escritorio.

Instalación

Para instalarlo en Ubuntu y derivadas:

1
$ sudo apt install spyder3

Usando Spyder

alt text

Nos encontraremos que el código debe ser escrito en la parte izquierda de la pantalla. Abajo a la derecha, tenemos una terminal con un intérprete (ipython) que nos permite ingresar instrucciones de la manera que venimos realizando hasta el momento. Hay un explorador de variables que nos muestra información útil de las mismas y los valores usados a lo largo de la ejecución del programa. La idea es que experimenten con el IDE ya que será, a partir de este momento, nuestra herramienta principal para programar.

updatedupdated2021-02-032021-02-03