0% encontró este documento útil (0 votos)
11 vistas

Introduciendo Python

entretenida introduccion al lenguaje mas usado ultimamente

Cargado por

alfasol
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
11 vistas

Introduciendo Python

entretenida introduccion al lenguaje mas usado ultimamente

Cargado por

alfasol
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 94

Introduciendo Python

Programación de la Raspberry Pi con


Python

Héctor Sánchez Santamaría


Índice

• Introducción
• ¿Qué es Python?
• Instalación del lenguaje
• Elementos de un programa Python
• Variables
• Tipos de datos
• Entrada y salida
• Estructuras de control
• Funciones
Introducción

• Para programar la Raspberry Pi, puedes usar cualquier lenguaje


de programación que compile para ARMv6
• Instalados por defecto en la Raspberry Pi están:
• Python
• C
• C++
• Java
• Scratch
• Ruby
• La Raspberry Pi Foundation recomienda Python
Introducción

• En este tema aprenderás a programar en Python utilizando la


Raspberry Pi.
• Vamos a explicar la versión de Python 3 (IDLE) que viene instalada
por defecto en el sistema operativo de Raspbian para Raspberry
Pi.
• No obstante, también podrás seguir el tema en caso de instalar
Python en tu sistema operativo Windows, Linux o MAC
(https://www.python.org/downloads/)
¿Qué es Python?
• Python es un lenguaje de programación…
• Interpretado: Se ejecuta sin necesidad de ser procesado por el compilador y se
detectan los errores en tiempo de ejecución.
• Multiparadigma: Soporta programación funcional, programación imperativa y
programación orientada a objetos.
• Para recordar los paradigmas de programación:
https://es.wikipedia.org/wiki/Paradigma_de_programaci%C3%B3n
• De tipado dinámico: La comprobación de tipificación se realiza durante la
ejecución.
• Multiplataforma: disponible para plataformas de Windows, Linux o
MAC.
• Gratuito: No dispone de licencia para programar.
• Python contiene una gran cantidad de librerías, tipos de datos y
funciones incorporadas en el propio lenguaje, que ayudan a realizar
muchas tareas comunes sin necesidad de tener que programarlas desde
cero.
• Pero lo que realmente le hace brillante utilizándolo en una Raspberry Pi,
es por la capacidad de poder utilizar los pines GPIO para conectar el
mundo físico con el mundo digital.
Instalación del lenguaje

• Si deseas instalar Python en Windows, por ejemplo, debes seguir


los siguientes pasos:
1. Descarga la versión más actual (3.6.4 a 10/02/2018) de
https://www.python.org/downloads/ y ejecútalo.
Instalación del lenguaje

• Si deseas instalar Python en Windows, por ejemplo, debes seguir


los siguientes pasos:

2. Tras haberse instalado podemos ejecutarlo (IDLE) desde el menú de


opciones de Windows:
Instalación del lenguaje

• Una vez que iniciamos el Python aparece la siguiente ventana:

• Para crear nuestro primer programa debemos seleccionar desde


el menú de opciones "File"->"New File":
Instalación del lenguaje

• En esta nueva ventana debemos codificar nuestro programa en


Python
• En programación, el primer programa que se crea es el que
imprime el texto "Hola Mundo" en un dispositivo de
visualización, terminal o shell.

• Procedemos a guardar en el disco duro el primer programa en


Python seleccionando la opción "File"->"Save“. Creamos un
directorio donde almacenaremos todos los ejercicios que
desarrollaremos durante este curso:
Instalación del lenguaje

• Para ejecutar el programa que acabas de codificamos debes


seleccionar desde la ventana del editor la opción "Run" -> "Run
Module":
Instalación del lenguaje

• Puedes ver, en otra ventana, el resultado de la ejecución de tu


primer programa en Python:
Instalación del lenguaje

• El sistema operativo Raspbian de tu Raspberry Pi tiene las


versiones 2 y 3 de Python instaladas. En este curso vas a trabajar
con Python 3 (IDLE).
• Además, utilizaras el programa Thonny Python IDE que viene
instalado por defecto en la instalación de Raspbian y que
encontrarás en Menu > Programming.
Elementos de un programa de
Python
• Un programa de Python es un fichero de texto (normalmente
guardado con el juego de caracteres UTF-8) 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 (tokens) de
diferentes tipos:
• palabras reservadas (keywords)
• funciones integradas (built-in functions)
• literales
• delimitadores
• Identificadores
• operadores
Elementos de un programa de
Python
• Líneas y espacios
• Un programa de Python está formado por líneas de texto.
• Se recomienda que cada línea contenga una única instrucción,
aunque puede haber varias instrucciones en una línea, separadas
por un punto y coma (;).
• Por motivos de legibilidad, se recomienda que las líneas no superen
los 79 caracteres. Si una instrucción supera esa longitud, se puede
dividir en varias líneas usando el caracter contrabarra (\)
• Los elementos del lenguaje se separan por espacios en blanco
(normalmente, uno), aunque en algunos casos no se escriben
espacios:
• entre los nombres de las funciones y el paréntesis
• antes de una coma (,)
• entre los delimitadores y su contenido (paréntesis, llaves, corchetes o
comillas)
Elementos de un programa de
Python
• Líneas y espacios
• Los espacios no son significativos, es decir, da lo mismo un espacio
que varios, excepto al principio de una línea.
• Los espacios al principio de una línea (el sangrado) indican un nivel
de agrupamiento. El sangrado inicial es una de las características de
Python que lo distinguen de otros lenguajes, que utilizan un carácter
para delimitar agrupamientos (en muchos lenguajes se utilizan las
llaves { }). Por ello, una línea no puede contener espacios iniciales, a
menos que forme parte de un bloque de instrucciones o de una
instrucción dividida en varias líneas.
• El carácter almohadilla (#) marca el inicio de un comentario. Python
ignora el resto de la línea (desde la almohadilla hasta el final de la
línea).
Elementos de un programa de
Python
• Palabras reservadas (keywords)
• Las palabras reservadas de Python son las que forman el núcleo del
lenguaje Python. Son las siguientes:

False class finally is return


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

• Estas palabras no pueden utilizarse para nombrar otros elementos


(variables, funciones, etc.), aunque pueden aparecer en cadenas de
texto.
Elementos de un programa de
Python
• Funciones integradas (built-in functions )
• Una función es un bloque de instrucciones agrupadas, que permiten
reutilizar partes de un programa.
• Python incluye las siguientes funciones de forma predeterminada (es
decir, estas funciones siempre están disponibles):

abs() dict() help() min() setattr()


all() dir() hex() next() slice()
any() divmod() id() object() sorted()
ascii() enumerate() input() oct() staticmethod()
bin() eval() int() open() str()
bool() exec() isinstance() ord() sum()
bytearray() filter() issubclass() pow() super()
bytes() float() iter() print() tuple()
callable() format() len() property() type()
chr() frozenset() list() range() vars()
classmethod() getattr() locals() repr() zip()
compile() globals() map() reversed() __import__()
complex() hasattr() max() round()
delattr() hash() memoryview() set()
Elementos de un programa de
Python
• Literales
• Los literales son los datos simples que Python es capaz de manejar:
• números: valores lógicos, enteros, decimales y complejos, en notación
decimal, octal o hexadecimal
• cadenas de texto
• Delimitadores
• Los delimitadores son los caracteres que permiten delimitar, separar
o representar expresiones. Son los siguientes:

' " # \
( ) [ ] { }
, : . ; @ = ->
+= -= *= /= //= %= @=
&= |= ^= >>= <<= **=
Elementos de un programa de
Python
• Identificadores
• Los identificadores son las palabras que se utilizan para nombrar
elementos creados por el usuario u otros usuarios. Esos elementos
pueden ser variables u objetos que almacenan información,
funciones que agrupan instrucciones, clases que combinan ambos,
módulos que agrupan los elementos anteriores, etc.
• Los identificadores están formados por letras (mayúsculas y
minúsculas), números y el carácter guión bajo (_). Pueden ser
caracteres Unicode, aunque normalmente se recomienda utilizar
caracteres ASCII para evitar complicaciones a usuarios de oros
países que utilizan juegos de caracteres diferentes.
• El primer carácter del identificador debe ser una letra.
Elementos de un programa de
Python
• Identificadores
• Los identificadores son las palabras que se utilizan para nombrar
elementos creados por el usuario u otros usuarios. Esos elementos
pueden ser variables u objetos que almacenan información,
funciones que agrupan instrucciones, clases que combinan ambos,
módulos que agrupan los elementos anteriores, etc.
• Los identificadores están formados por letras (mayúsculas y
minúsculas), números y el carácter guión bajo (_). Pueden ser
caracteres Unicode, aunque normalmente se recomienda utilizar
caracteres ASCII para evitar complicaciones a usuarios de oros
países que utilizan juegos de caracteres diferentes.
• El primer carácter del identificador debe ser una letra.
Elementos de un programa de
Python
• Operadores
• Python el paradigma de la programación funcional. Esto quiere
decir que está basada en una programación declarativa de
funciones matemáticas.
• Operadores aritméticos: Al hacer operaciones con números
enteros y decimales el resultado es siempre decimal
• En el caso de que el resultado no tenga parte decimal, Python escribe 0 como
parte decimal.

Suma +
Resta -
Multiplicación *
División /
Potencia **
Resto %
Cociente //
Elementos de un programa de
Python
• Operadores
• Operadores lógicos: son utilizados, en la mayoría de las ocasiones,
en las estructuras condicionales. Los resultados que devuelven son
de tipo booleano, es decir, verdadero (True) o falso (False).

Igual que ==
Distinto que !=
Mayor que >
Mayor o igual que >=
Menor que <
Menor o igual que <=
Elementos de un programa de
Python
• Operadores
• Expresiones compuestas: Se utilizan para evaluar varias
expresiones lógicas.
• and: "y" lógico. Este operador da como resultado True si y sólo si sus dos
operandos son True
• or: "o" lógico. Este operador da como resultado True si algún operando es True
• not: negación. Este operador da como resultado True si y sólo si su argumento es
False
• Python evalúa primero los not, luego los and y por último los or
• Se recomienda utilizar paréntesis para asegurar el orden de las
operaciones.
Elementos de un programa de
Python
• Funciones adicionales
• Un programa puede definir nuevas funciones o redefinir las
funciones integradas. Los nombres de las funciones no pueden
coincidir con las palabras reservadas.
• Un programa puede también importar nuevas funciones que se
encuentran definidas en otros ficheros llamados módulos.
• Python incluye una biblioteca de módulos (llamada Biblioteca
estándar - https://docs.python.org/3/library/) especializados en todo
tipo de tareas.
• Además de la biblioteca estándar, existen miles de módulos escritos
por diferentes programadores y accesibles en Internet. El principal
repositorio de módulos es el Python Package Index (Índice de
paquetes de Python - https://pypi.python.org/pypi), más conocido
por PyPI.
Variables

• Python es un lenguaje de programación orientado a objetos y


su modelo de datos también está basado en objetos.
• Para cada dato que aparece en un programa, Python crea un
objeto que lo contiene. Cada objeto tiene:
• un identificador único (un número entero, distinto para cada objeto).
El identificador permite a Python referirse al objeto sin
ambigüedades.
• un tipo de datos (entero, decimal, cadena de caracteres, etc.). El
tipo de datos permite saber a Python qué operaciones pueden
hacerse con el dato.
• un valor (el propio dato).
• Así, las variables en Python no guardan los datos, sino que son
simples nombres para poder hacer referencia a esos objetos.
Variables

• En Python se distingue entre objetos mutables y objetos inmutables:


• Los objetos inmutables son objetos que no se pueden modificar. Por
ejemplo, los números, las cadenas y las tuplas son objetos inmutables
• Los objetos mutables son objetos que se pueden modificar. Por
ejemplo, las listas y los diccionarios son objetos mutables.
• Las variables en Python se crean cuando se les asigna un valor por
primera vez. Para asignar un valor a una variable se utiliza el
operador de igualdad (=). A la izquierda de la igualdad se escribe el
nombre de la variable y a la derecha el valor que se quiere dar a la
variable.
• La instrucción del borra completamente una variable.
• El nombre de una variable debe empezar por una letra o por un
guión bajo (_) y puede seguir con más letras, números o guiones
bajos.
Variables

• Los nombres de las variables pueden contener mayúsculas, pero


tenga en cuenta que Python distingue entre mayúsculas y minúsculas
(en inglés se dice que Python es "case-sensitive").
• Cuando el nombre de una variable contiene varias palabras, se
aconseja separarlas con guiones bajos para facilitar su legibilidad
• También se utiliza la notación camelCase
(https://en.wikipedia.org/wiki/Camel_case), en las que las palabras no se
separan pero empiezan con mayúsculas (salvo la primera palabra).
• Las palabras reservadas del lenguaje están prohibidas como
nombres de variables
• Los nombres de las funciones integradas sí que se pueden utilizar
como nombres de variables
• Es mejor no hacerlo porque a continuación ya no se puede utilizar la
función como tal
• Borrando con del la variable con nombre de función, se recupera la
función.
Variables

• Hay que tener cuidado al modificar una variable que se ha


utilizado para definir otras variables, porque esto puede afectar al
resto de variables:
• Si se trata de objetos inmutables, el resto de variables no resultan
afectadas.

• Si se trata de objetos mutables y al modificar la variable se modifica


el objeto, el resto de variables sí resultan afectadas
Variables

• Cuando una variabe se modifica a partir de su propio valor, se


puede utilizar la denominada "asignación aumentada“
(https://docs.python.org/3/reference/simple_stmts.html#assignm
ent-statements )

Asignación es equivalente a
aumentada
a += b a=a+b
a -= b a=a-b
a *= b a=a*b
a /= b a=a/b
a **= b a = a ** b
a //= b a = a // b
a %= b a=a%b
Variables

• Se pueden modificar varias variables en una sola instrucción y la


modificación se realiza en un solo paso.

• Si este procedimiento lo hubiéramos hecho paso a paso, el resultado


hubiera sido distinto
Tipos de datos

• En programación, un tipo de dato es la forma de representación del dato e indica


la clase de dato que se va a manejar. Esto incluye imponer restricciones en los
datos, como qué valores pueden tomar y qué operaciones se pueden realizar.
• Python es un lenguaje de programación de propósito general y por ello contiene
una gran cantidad de tipos de datos con los que se puede programar.
• Numéricos: En Python los números pueden ser enteros, flotantes o complejos.
• Booleanos: Los tipos de datos booleanos se utilizan para representar verdadero y falso, mediante las
palabras reservadas True o False respectivamente. Este tipo de datos es muy importante para el
control de flujo de un programa.
• Cadenas: Aunque las cadenas no son usualmente importantes para análisis numérico, sí lo son para
mostrar resultados por la terminal o shell. Una cadena debe delimitarse con comillas simples o dobles
y admite caracteres de escape.
• Listas: Una lista es una colección de objetos: números enteros, flotantes, complejos, cadenas, etc. Una
lista se delimita utilizando [] y sus elementos han de separarse con comas. Es posible acceder a sus
elementos indicando el índice del elemento deseado.
• Tuplas: En muchos sentidos una tupla es como una lista, contienen una colección de objetos de
distinto tipo. Es decir, son lista de elementos de diferente tipo de dato.
• Una lista puede ser alterada, no así una tupla.
• Una tupla puede ser utilizada como clave en un diccionario, no así una lista.
• Una tupla consume menos espacio que una lista.
• Diccionario: Un diccionario se compone de dos partes: una clave (palabra) y un valor (definición). Las
claves siempre deben ser un tipo de datos primitivo. La clave y el valor se separan con : y sus
elementos con comas.
Tipos de datos

• Números
• Python distingue entre números enteros y decimales. Al escribir un
número decimal, el separador entre la parte entera y la parte
decimal es un punto.
• OJO: Si se escribe una coma como separador entre la parte entera y la
decimal, Python no lo entiende como separador, sino como una pareja
de números (concretamente, lo entiende como una tupla de dos
elementos
• Si se escribe un número con parte decimal 0, Python considera el
número como número decimal.
• Python trae soporte por defecto para los números complejos, dónde
la parte imaginaria va a estar representada por la letra j en lugar de
utilizar la i como en la notación matemática.
Tipos de datos

• Números
• Al sumar, restar o multiplicar números enteros, el resultado es
entero.
• Al dividir números enteros, el resultado es siempre decimal, aunque
sea un número entero.
• Cuando Python escribe un número decimal, lo escribe siempre con
parte decimal, aunque sea nula.
• Al hacer operaciones en las que intervienen números enteros y
decimales, el resultado es siempre decimal. En el caso de que el
resultado no tenga parte decimal, Python escribe 0 como parte
decimal para indicar que el resultado es un número decimal
• OJO: Al realizar operaciones con decimales, los resultados pueden
presentar errores de redondeo
• Este error se debe a que Python almacena los números decimales en
binario y pasar de decimal a binario provoca errores de redondeo
• Si necesitas precisión absoluta, deberas utilizar bibliotecas específicas.
Tipos de datos

• Números
• Cuando en una fórmula aparecen varias operaciones, Python las
efectúa aplicando las reglas usuales de prioridad de las operaciones
(primero multiplicaciones y divisiones, después sumas y restas)
• En caso de querer que las operaciones se realicen en otro orden, se
deben utilizar paréntesis
• El operador cociente // tiene la misma prioridad que la división. El
resultado es siempre un número entero, pero será de tipo entero o
decimal dependiendo del tipo de los números empleados (en caso
de ser decimal, la parte decimal es siempre cero).
• El operador resto % tiene la misma prioridad que la división. El resto
de la división tendrá tipo entero o decimal, de acuerdo con el
resultado de la operación.
Tipos de datos

• Números
• Las potencias tienen prioridad sobre las multiplicaciones y
divisiones. Utilizando exponentes negativos o decimales se pueden
calcular potencias inversas o raíces n-ésimas.
• También se pueden calcular potencias o raíces mediante la función
pow(x,y). Si se da un tercer argumento, pow(x, y, z), la
función calcula primero x elevado a y después calcula el resto de la
división por z.
• Para redondear un número se puede utilizar la función round().
Admite uno o dos argumentos numéricos.
• Si sólo hay un argumento, la función devuelve el argumento
redondeado al entero más próximo
• Si se escriben dos argumentos, siendo el segundo un número entero, la
función round() devuelve el primer argumento redondeado en la
posición indicada por el segundo argumento. Si el segundo argumento
es negativo, se redondea a decenas, centenas, etc. Si el segundo
argumento es 0, se redondea al entero más próximo pero el resultado
es decimal y no entero.
Tipos de datos

• Números
• Para redondear un número al entero anterior o posterior, se pueden
utilizar las funciones floor() y ceil(), que están incluidas en la
biblioteca math. Estas funciones sólo admiten un argumento
numérico y devuelven valores enteros.
• Antes de utilizar estas funciones, hay que importarlas, o se generará
un error: from math import floor
• La función integrada abs() calcula el valor abosluto de un número,
es decir, el valor sin signo.
Tipos de datos

• Booleanos
• En Python cualquier variable (en general, cualquier objeto) puede
considerarse como una variable booleana. En general, los elementos
nulos o vacíos se consideran False y el resto se consideran True.
• Para comprobar si un elemento se considera True o False, se puede
convertir a su valor booleano mediante la función bool().
Tipos de datos

• Cadenas de texto
• Una cadena es una secuencia inmutable de caracteres Unicode,
delimitada por comillas.
• Las cadenas de texto se pueden delimitar con comillas simples (') o con
comillas dobles ("). Son completamente equivalentes.
• Las comillas triples permiten que las cadenas ocupen más de
una línea.
• Se utilizan, sobre todo, para la documentación de módulos, funciones,
clases o métodos. Son las llamadas docstrings, definidas en el PEP 257
(https://www.python.org/dev/peps/pep-0257/). Son cadenas que se
escriben al principio del elemento describiendo lo que hace el
elemento. No producen ningún resultado en el programa, pero las
herramientas de documentación de Python pueden extraerlas para
generar documentación automáticamente.
Tipos de datos

• Cadenas de texto
• Se pueden escribir comillas simples en cadenas delimitadas con
comillas dobles y viceversa.
• Otra forma de escribir comillas en una cadena es utilizar los
caracteres especiales \" y \' que representan los caracteres comillas
dobles y simples respectivamente y que Python no interpreta en
ningún caso como delimitadores de cadena.
• Se pueden utilizar ambos caracteres especiales independientemente
del delimitador utilizado
• Otros caracteres especiales:
• Salto de línea: \n
• Tabulador: \t
• En el prompt de IDLE se pueden escribir cadenas sueltas, sin
necesidad de escribir la función print().
Tipos de datos

• Cadenas de texto
• Si un programa contiene cadenas muy largas, las cadenas se pueden
simplemente partir en varias cadenas.

• El operador + nos permite concatenar dos cadenas.


Tipos de datos

• Cadenas de texto
• También es posible concatenar una variable de tipo string con una
cadena o concatenar directamente dos variables.

• En ocasiones, la expresión es más fácil de leer si empleamos el


método format(). Este método admite emplear, dentro de la
cadena de texto, los caracteres { }, entre los que irá, número o el
nombre de una variable. Como argumentos del método pueden
pasarse variables que serán sustituidas, en tiempo de ejecución, por
los marcadores { }, indicados en la cadena de texto.

• La concatenación entre strings y números también es posible,


siendo para ello necesario el uso de funciones como int() y
str().
Tipos de datos

• Cadenas de texto
• El operador * aplicado a cadenas de texto nos permite repetir una
cadena n veces.

• Gracias al operador in podemos averiguar si un determinado


carácter se encuentra o no en una cadena de texto.

• Una cadena es inmutable en Python, pero podemos acceder, a


través de índices, a cada carácter que forma parte de ella.
• Los índices también nos pueden ayudar a obtener subcadenas de
texto basadas en la original.
• Los índices negativos también funcionan,
simplemente indican que se empieza a contar
desde el último carácter.
Tipos de datos

Revisa los siguientes ejemplos:


ejemplo1.py
ejemplo2.py
ejemplo3.py
ejemplo4.py
ejemplo5.py
Tipos de datos

• Listas
• Las listas son conjuntos ordenados de elementos (números, cadenas,
listas, etc.). Las listas se delimitan por corchetes ([ ]) y los elementos
se separan por comas.
• Las listas pueden contener
• elementos del mismo tipo
• elementos de tipos distintos
• listas
• Las listas pueden tener muchos niveles de anidamiento
• Las variables de tipo lista hacen referencia a la lista completa
• Una lista que no contiene ningún elemento se denomina lista vacía
• Al definir una lista se puede hacer referencia a otras variables
Tipos de datos

• Listas
• Se puede acceder a cualquier elemento de una lista escribiendo el
nombre de la lista y entre corchetes el número de orden en la lista.
• El primer elemento de la lista es el número 0.

• Se pueden concatenar dos listas utilizando la operación suma (+)


• Necesita que los dos operandos sean listas
Tipos de datos

• Listas
• Cada elemento se identifica por su posición en la lista, teniendo en
cuenta que se empieza a contar por 0.
• Se pueden utilizar números negativos (el último elemento tiene el
índice -1 y los elementos anteriores tienen valores descendentes)
• Se puede modificar cualquier elemento de una lista haciendo
referencia a su posición
Tipos de datos

• Listas
• De una lista se pueden extraer sublistas, utilizando la notación
nombreDeLista[inicio:límite]
• Se puede modificar una lista modificando sublistas. De esta manera
se puede modificar un elemento o varios a la vez e insertar o
eliminar elementos
• Al definir sublistas, Python acepta valores fuera del rango, que se
interpretan como extremos (al final o al principio de la lista)
Tipos de datos

• Listas
• La palabra reservada del permite eliminar un elemento o varios
elementos a la vez de una lista, e incluso la misma lista.

• Si queremos copiar una lista, de manera que conservemos su valor


aunque modifiquemos la lista original debemos utilizar la notación
de sublistas.
Tipos de datos

• Listas
• Se puede recorrer una lista de principio a fin de dos formas
distintas:
• Recorrer directamente los elementos de la lista, es decir, que la variable
de control del bucle tome los valores de la lista que estamos
recorriendo:

• Recorrer indirectamente los elementos de la lista, es decir, que la


variable de control del bucle tome como valores los índices de la lista
que estamos recorriendo (0,1 ,2 , etc.).
Tipos de datos

• Listas
• Se puede recorrer una lista de principio a fin de dos formas
distintas:
• Para saber si un valor está en una lista se puede utilizar el operador in.
La sintaxis sería "elemento in lista" y devuelve un valor lógico:
True si el elemento está en la lista, False si el elemento no está en la
lista.
Tipos de datos

Revisa los siguientes ejemplos:


De ejemplo6.py al
ejemplo23.py
Tipos de datos

• Tuplas
• En Python, una tupla es un conjunto ordenado e inmutable de
elementos del mismo o diferente tipo.
• Una vez inicializada la tupla no podemos agregar, borrar o modificar sus
elementos.
• Las tuplas se representan escribiendo los elementos entre paréntesis
y separados por comas.
• En realidad no es necesario escribir los paréntesis para indicar que se
trata de una tupla, basta con escribir las comas, pero Python escribe
siempre los paréntesis
• La función len() devuelve el número de elementos de una tupla
• Una tupla puede no contener ningún elemento, es decir, ser una
tupla vacía
• Una tupla puede incluir un único elemento, pero para que Python
entienda que nos estamos refiriendo a una tupla es necesario
escribir al menos una coma.
Tipos de datos

• Tuplas
• Python posibilita la conversión de tuplas a listas y viceversa
mediante las funciones:
list(parametro de tipo tupla)
tuple(parametro de tipo lista)
• Empaquetado: Se puede generar una tupla asignando a una
variable un conjunto de variables o valores separados por coma

• Desempaquetado:
Tipos de datos

Revisa los siguientes ejemplos:


De ejemplo24.py al
ejemplo26.py
Tipos de datos

• Diccionarios
• En Python, un diccionario es una colección no-ordenada de valores
que son accedidos a través de una clave.
• En lugar de acceder a la información mediante el índice numérico,
como es el caso de listas y tuplas, es posible acceder a los valores a
través de sus claves.
• Las claves son únicas dentro de un diccionario.
• Si se asigna un valor a una clave ya existente, se reemplaza el valor anterior.
• Cualquier variable de tipo inmutable, puede ser clave de un
diccionario: cadenas, enteros, tuplas, etc.
• No hay restricciones para los valores que el diccionario puede
contener: listas, cadenas, tuplas, otros diccionarios, objetos, etc.
• Un diccionario es una estructura de datos mutable es decir
podemos agregar elementos, modificar y borrar.
Tipos de datos

• Diccionarios
• Es posible definir un diccionario directamente con los miembros que
va a contener, o bien inicializar el diccionario vacío y luego agregar
los valores de uno en uno.
Tipos de datos

• Diccionarios
• Para acceder al valor asociado a una determinada clave, se utiliza la
clave. Esto falla si se proporciona una clave que no esta en el
diccionario. Por ello, se recomienda utilizar la función get, que
devuelve None, o un valor por omisión que se establece
opcionalmente, si la clave no está en el diccionario.
Tipos de datos

• Diccionarios
• Existen diversas formas de recorrer un diccionario:
• Recorrer sus claves y usar esas claves para acceder a los valores

• Obtener los valores como tuplas donde el primer elemento es la clave y


el segundo el valor
Tipos de datos

• Diccionarios
• Para verificar si una clave se encuentra en el diccionario, se utiliza la
palabra reservada in
Tipos de datos

Revisa los siguientes ejemplos:


De ejemplo27.py al
ejemplo31.py
Entrada y salida

• Salida
• Para que IDLE muestre el valor de una variable, basta con escribir su
nombre.
• También se puede conocer el valor de varias variables a la vez
escribiéndolas entre comas (IDLE las mostrará entre paréntesis)
• En los programas, para mostrar texto o variables hay que utilizar la
función print()
• El texto a mostrar se escribe como argumento de la función
• La función print() admite varios argumentos seguidos. En el
programa, los argumentos deben separarse por comas. Los
argumentos se muestran en el mismo orden y en la misma línea,
separados por espacios.
• Al final de cada print(), Python añade automáticamente un salto
de línea
• Si no se quiere que Python añada un salto de línea al final de un print(),
se debe añadir al final el argumento end=""
Entrada y salida

• Salida
• Para generar una línea en blanco, se puede escribir una orden
print() sin argumentos
• Para incluir comillas dentro de comillas, se puede escribir una
contrabarra (\) antes de la comilla para que Python reconozca la
comilla como carácter, no como delimitador de la cadena o escribir
comillas distintas a las utilizadas como delimitador de la cadena
• La función print() permite incluir variables o expresiones como
argumento, lo que nos permite combinar texto y variables

• La función print() muestra los argumentos separados por


espacios, lo que a veces no es conveniente:
Entrada y salida

• Salida
• Para eliminar ese espacio, se puede reducir el número de
argumentos, concatenando texto y variables con el operador suma
(+):

• OJO: no se pueden concatenar cadenas y números con el operador


suma (+). Hay que convertir los números a cadenas con la función
str() antes de concatenarlos:
Entrada y salida

• Salida
• En Python 3.6 se ha añadido (PEP 498 -
https://www.python.org/dev/peps/pep-0498/) una nueva notación
para cadenas llamada cadenas "f", que simplifica la inserción de
variables y expresiones en las cadenas.
• Una cadena "f" contiene variables y expresiones entre llaves ({}) que
se sustituyen directamente por su valor.
• Se reconocen porque comienzan por una letra f antes de las comillas
de apertura

• Esta notación no añade espacios que en la notación "clásica"


aparecían al incluir varios argumentos separados por comas
• Si se quieren escribir los carácteres { o } se deben escribir duplicados
Entrada y salida

• Salida
• Las cadenas "f" permiten dar formato a las variables, siguiendo la
sintaxis del método
str.format()(https://docs.python.org/3/library/string.html#format
strings)
Entrada y salida

• Entrada
• La función input() permite obtener texto escrito por teclado. Al
llegar a la función, el programa se detiene esperando que se escriba
algo y se pulse la tecla Intro.
• El usuario escribe su respuesta en una línea distinta a la pregunta
porque Python añade un salto de línea al final de cada print().
• Si se prefiere que el usuario escriba su respuesta a continuación de
la pregunta, se podría utilizar el argumento opcional end en la
función print(), que indica el carácter o caracteres a utilizar en vez
del salto de línea.

• Otra solución, más compacta, es aprovechar que a la función


input() se le puede enviar un argumento que se escribe en la
pantalla (sin añadir un salto de línea)
Entrada y salida

• Entrada
• De forma predeterminada, la función input() convierte la entrada
en una cadena. Si se quiere que Python interprete la entrada como
un número entero o un número decimal, se debe utilizar las
funciones int() y float(), respectivamente.
• La función input() sólo puede tener un argumento.
Entrada y salida

• Ficheros
• Antes de poder realizar cualquier operación de lectura/escritura hay
que abrir el archivo con open() indicando su ubicación y nombre
seguido, opcionalmente, por el modo o tipo de operación a realizar
y la codificación que tendrá el archivo.
• Si no se indica el tipo de operación el archivo se abrirá en modo de
lectura y si se omite la codificación se utilizará la codificación actual del
sistema.
• ¿Y que codificación utiliza nuestro sistema? Podemos
averiguarlo ejecutando las siguiente líneas de código:
import locale
print(locale.getpreferredencoding())
Entrada y salida

• Ficheros
• Las operaciones que pueden realizarse sobre un archivo:
r Lectura
r+ Lectura/Escritura
w Sobreescritura. Si no existe el achivo se creará.
a Añadir. Escribe al final del archivo.
b Binario
+ Permite lectura/escritura simultanea
U Salta de línea universal
Win CR*LF
Linux LF
Mac CR
rb Lectura binaria
wb Sobreescritura binaria
r+b Lectura/Escritura binaria
Entrada y salida

• Ficheros
• Después de terminar de trabajar con un archivo lo cerraremos con el
método close.
• Con el método read() es posible leer un número de bytes
determinados.
• Si no se indica número se leerá todo lo que reste o si se alcanzó el final
de fichero devolverá una cadena vacía.
• El método readline() lee de un archivo una línea completa
• El método readlines() lee todas las líneas de un archivo como
una lista. Si se indica el parámetro de tamaño leerá esa cantidad de
bytes del archivo y lo necesario hasta completar la última línea
• with-as permite usar los archivos de forma óptima cerrándolos y
liberando la memoria al concluir el proceso de lectura.
Entrada y salida

• Ficheros
• El método write() escribe una cadena y el método
writelines() escribe una lista a un archivo.
• Si en el momento de escribir el archivo no existe se creará uno nuevo.
• El método seek() desplaza el puntero a una posición del archivo y
el método tell() devuelve la posición del puntero en un
momento dado (en bytes).
• Para leer y escribir cualquier tipo de objeto Python podemos
importar el modulo pickle y usar sus métodos dump() y
load() para leer y escribir los datos.
Entrada y salida

Revisa los siguientes ejemplos:


De ejemplo32.py al
ejemplo37.py
Estructuras de control

• Sentencias condicionales: if ...


• La estructura de control if ... permite que un programa ejecute
unas instrucciones cuando se cumplan una condición.
• La primera línea contiene la condición a evaluar y es una expresión
lógica. Esta línea debe terminar siempre por dos puntos (:).
• A continuación viene el bloque de órdenes que se ejecutan cuando
la condición se cumple (es decir, cuando la condición es verdadera).
Importante: este bloque debe ir sangrado, puesto que Python utiliza
el sangrado para reconocer las líneas que forman un bloque de
instrucciones. Para terminar un bloque, basta con volver al principio
de la línea.
Estructuras de control

• Bifurcaciones: if ... else ...


• La estructura de control if ... else ... permite que un
programa ejecute unas instrucciones cuando se cumple una
condición y otras instrucciones cuando no se cumple esa condición

• Si por algún motivo no se quisiera ejecutar ninguna orden en alguno


de los bloques, el bloque de órdenes debe contener al menos la
orden pass (esta orden le dice a Python que no tiene que hacer
nada)
Estructuras de control

• Sangrado de bloques
• Un bloque de instrucciones puede contener varias instrucciones.
Todas las instrucciones del bloque deben tener el mismo sangrado.
• Sentencias condicionales anidadas
• Una sentencia condicional puede contener a su vez otra sentencia
anidada. OJO con los sangrados.
• Más de dos alternativas: if ... elif ... else ...
• La estructura de control if ... elif ... else ... permite
encadenar varias condiciones. "elif" es una contracción de "else
if".
• Se pueden escribir tantos bloques elif como sean necesarios
Estructuras de control

• Sangrado de bloques
• Un bloque de instrucciones puede contener varias instrucciones.
Todas las instrucciones del bloque deben tener el mismo sangrado.
• Sentencias condicionales anidadas
• Una sentencia condicional puede contener a su vez otra sentencia
anidada. OJO con los sangrados.
• Más de dos alternativas: if ... elif ... else ...
• La estructura de control if ... elif ... else ... permite
encadenar varias condiciones. "elif" es una contracción de "else
if".
• Se pueden escribir tantos bloques elif como sean necesarios
Estructuras de control

• Condiciones no booleanas
• Dado que cualquier variable puede interpretarse como una variable
booleana, si la condición es una comparación con cero, podemos
omitir la comparación.
Estructuras de control

• El bucle for
• Un bucle es una estructura de control que repite un bloque de
instrucciones.
• Un bucle for es un bucle que repite el bloque de instrucciones un
número prederminado de veces. El bloque de instrucciones que se
repite se suele llamar cuerpo del bucle y cada repetición se suele
llamar iteración.
• La sintaxis de un bucle for es la siguiente:
for variable in elemento iterable (lista, cadena, range, etc.):
cuerpo del bucle
• No es necesario definir la variable de control antes del bucle,
aunque se puede utilizar como variable de control una variable ya
definida en el programa.
• El cuerpo del bucle se ejecuta tantas veces como elementos tenga
el elemento recorrible (elementos de una lista o de un range(),
caracteres de una cadena, etc.)
Estructuras de control

• El bucle for
• La variable de control puede ser una variable empleada antes del
bucle. El valor que tuviera la variable no afecta a la ejecución del
bucle, pero cuando termina el bucle, la variable de control conserva
el último valor asignado:
Estructuras de control

• El bucle for
• En vez de una lista se puede escribir una cadena. En este caso, la
variable de control va tomando como valor cada uno de los
caracteres:

• Se recomienda utilizar tipos range(), entre otros motivos porque


durante la ejecución del programa ocupan menos memoria en el
ordenador
• El argumento del tipo range() controla el número de veces que se
ejecuta el bucle
• Aunque en Python no es necesario, se recomienda que los nombres de las
variables de control de los bucles anidados no coincidan, para evitar
ambigüedades.
Estructuras de control

• El bucle while
• Un bucle while permite repetir la ejecución de un grupo de
instrucciones mientras se cumpla una condición (es decir, mientras la
condición tenga el valor True)
• La sintaxis del bucle while es la siguiente:
while condicion:
cuerpo del bucle
• Cuando llega a un bucle while, Python evalúa la condición y, si es
cierta, ejecuta el cuerpo del bucle. Una vez ejecutado el cuerpo del
bucle, se repite el proceso (se evalúa de nuevo la condición y, si es
cierta, se ejecuta de nuevo el cuerpo del bucle) una y otra vez
mientras la condición sea cierta. Únicamente cuando la condición
sea falsa, el cuerpo del bucle no se ejecutará y continuará la
ejecución del resto del programa.
Estructuras de control

• El bucle while
• Si la condición del bucle se cumple siempre, el bucle no terminará
nunca de ejecutarse y tendremos lo que se denomina un bucle
infinito.
• Para interrumpir un bucle infinito, hay que pulsar la combinación de
teclas Ctrl+C.
Estructuras de control

Revisa los siguientes ejemplos:


De ejemplo38.py al
ejemplo41.py
Funciones

• Las funciones se pueden crear en cualquier punto de un


programa, escribiendo su definición.
• Para poder utilizar una función en un programa se tiene que haber
definido antes. Por ello, normalmente las definiciones de las
funciones se suelen escribir al principio de los programas
• La primera línea de la definición de una función contiene:
• la palabra reservada def
• el nombre de la función (la guía de estilo de Python recomienda
escribir todos los caracteres en minúsculas separando las palabras
por guiones bajos)
• paréntesis (que pueden incluir los argumentos de la función)
• Las instrucciones que forman la función se escriben con sangría
con respecto a la primera línea.
• Por comodidad, se puede indicar el final de la función con la
palabra reservada return aunque no es obligatorio.
Funciones

• Variables locales
• Si no se han declarado como globales o no locales, las variables a
las que se asigna valor en una función se consideran variables
locales, es decir, sólo existen en la propia función, incluso cuando en
el programa exista una variable con el mismo nombre.

• Las variables locales sólo existen en la propia función y no son


accesibles desde niveles superiores
• Si en el interior de una función se asigna valor a una variable que no
se ha declarado como global o no local, esa variable es local a todos
los efectos.
Funciones

• Variables libres globales o no locales


• Si a una variable no se le asigna valor en una función, Python la
considera libre y busca su valor en los niveles superiores de esa
función, empezando por el inmediatamente superior y continuando
hasta el programa principal.
Funciones

• Variables libres globales o no locales


• Si a la variable se le asigna valor en algún nivel intermedio la
variable se considera no local y si se le asigna en el programa
principal la variable se considera global
Funciones

• Variables declaradas global o nonlocal


• Si queremos asignar valor a una variable en una subrutina, pero no
queremos que Python la considere local, debemos declararla en la
función como global o nonlocal

• Si a una variable declarada global o nonlocal en una función no se le


asigna valor en el nivel superior correspondiente, Python dará un
error de sintaxis.
Funciones

• Argumentos y devolución de valores


• Las funciones en Python admiten argumentos en su llamada y
permiten devolver valores.
• Las funciones admiten argumentos, es decir, permiten que se les
envíen valores con los que trabajar y así facilitar su reutilización
• De hecho, las funciones pueden admitir una cantidad
indeterminada de valores:
Funciones

• Argumentos y devolución de valores


• Las funciones pueden devolver varios valores simultáneamente:
Funciones

• Conflictos entre nombres de parámetros y nombre de


variables globales
• En Python no se producen conflictos entre los nombres de los
parámetros y los nombres de las variables globales.
• El nombre de un parámetro puede coincidir o no con el de una variable
global, pero Python no los confunde: en el ámbito de la función el
parámetro hace siempre referencia al dato recibido y no a la variable
global y los programas producen el mismo resultado.
• Dependiendo de si a la función se le envía como parámetro un
objeto mutable o inmutable, la función podrá modificar o no al
objeto
Funciones

• Conflictos entre nombres de parámetros y nombre de


variables globales
• Objeto mutable
Funciones

• Conflictos entre nombres de parámetros y nombre de


variables globales
• Objeto inmutable
Funciones

• Paso por valor o paso por referencia


• En Python cuando se envía una variable como argumento en una
llamada a una función lo que se envía es la referencia al objeto al
que hace referencia la variable. Dependiendo de si el objeto es
mutable o inmutable, la función podrá modificar o no el objeto.

También podría gustarte