Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
tutorial_de_python [2022/11/18 03:58] – [Tipos Avanzados] peron | tutorial_de_python [2022/11/19 22:22] (actual) – [Tutorial de Python] peron | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
======Tutorial de Python====== | ======Tutorial de Python====== | ||
- | Este tutorial fue escrito por ~sdemingo. | + | ¡Buenvenid@ la introducción de programación en Python de ~sdemingo! |
- | **Python** es un lenguaje de programación de alto nivel cuya filosofía hace hincapié en la legibilidad de su código fuente. | + | **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 aprender |
- | + | ||
- | Es sencillo de aprender por lo que es ideal para enseñar | + | |
>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. | >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. | ||
Línea 10: | Línea 8: | ||
=====Introducción===== | =====Introducción===== | ||
- | Un // | + | Un // |
- | Para escribir programas la herramienta básica es [[editores_de_texto|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. | + | Para escribir programas la herramienta básica es un [[editores_de_texto|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 |
**Python** es un lenguaje de programación // | **Python** es un lenguaje de programación // | ||
Línea 68: | Línea 66: | ||
Como se ve, una vez que asignas los valores numéricos a sus respectivos nombres, podrás operar con dichos valores utilizando dichos // | Como se ve, una vez que asignas los valores numéricos a sus respectivos nombres, podrás operar con dichos valores utilizando dichos // | ||
- | ===Tipos de datos=== | + | ====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: | + | En Python podemos manejar datos de muchos tipos diferentes pero, por ahora, vamos a centrarnos solo en los llamados |
* **Enteros**: | * **Enteros**: | ||
Línea 143: | Línea 141: | ||
====El tipo string==== | ====El tipo string==== | ||
- | 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). | + | 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 // | 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 // | ||
Línea 197: | Línea 195: | ||
3. Pide al usuario que te introduzca una frase y cambia todas las apariciones de las letras ‘e’ por ‘E’ y ‘a’ por ‘A’. | 3. Pide al usuario que te introduzca una frase y cambia todas las apariciones de las letras ‘e’ por ‘E’ y ‘a’ por ‘A’. | ||
[[Ej2c.py|Solución]] | [[Ej2c.py|Solución]] | ||
- | ====Funciones==== | ||
===== 3. Tipos Avanzados ===== | ===== 3. Tipos Avanzados ===== | ||
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: | 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 | + | * Listas |
- | * Las tuplas | + | * Tuplas |
- | * Los diccionarios | + | * Diccionarios |
- | ====Las listas==== | + | ====Listas==== |
- | 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: | + | Una // |
numeros = [4, | numeros = [4, | ||
- | Una lista puede estar compuesta, como ya hemos dicho, | + | Una lista puede estar compuesta por datos de diferente |
numerosYmas = [4, -2, " | numerosYmas = [4, -2, " | ||
Línea 219: | Línea 216: | ||
listaVacia = [] | 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 | + | En el ejemplo anterior vemos que el tercer elemento de '' |
+ | |||
+ | > | ||
+ | |||
+ | Para imprimir por pantalla el cuarto elemento de '' | ||
Usando un índice de '' | Usando un índice de '' | ||
Línea 230: | Línea 231: | ||
</ | </ | ||
- | 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: | + | Para añadir miembros a una lista podemos usar el operador |
numerosYmas = numerosYmas + [2] | numerosYmas = numerosYmas + [2] | ||
- | También podemos hacer uso del método '' | + | También podemos hacer uso del método '' |
Para eliminar elementos de una lista usaremos la instrucción del seguido del elemento que queremos borrar. Por ejemplo: | Para eliminar elementos de una lista usaremos la instrucción del seguido del elemento que queremos borrar. Por ejemplo: | ||
Línea 258: | Línea 259: | ||
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. | 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. | ||
- | ====Las tuplas==== | + | ====Tuplas==== |
- | 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. | + | Una //tupla// en Python es un **conjunto de datos que están agrupados**. |
- | Para definir | + | >A diferencia de una lista, una vez creada __una tupla no puede ser modificada__. No podrás agregarle nuevos |
+ | |||
+ | Definir una tupla indicando | ||
<code python> | <code python> | ||
tupla = (8, " | tupla = (8, " | ||
</ | </ | ||
- | Para acceder a los componentes usaremos el mismo mecanismo que con las listas. Usando | + | Para acceder a los componentes usaremos el mismo mecanismo que con las listas, empleando |
<code python> | <code python> | ||
print (tupla[1]) | print (tupla[1]) | ||
</ | </ | ||
- | ====Los diccionarios==== | + | ====Diccionarios==== |
- | 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 | + | 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: __es posible |
- | 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: | + | Estos índices se llaman // |
+ | |||
+ | >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: | ||
<code python> | <code python> | ||
temperaturas = {" | temperaturas = {" | ||
</ | </ | ||
- | Con la anterior declaración hemos creado un diccionario | + | Con la anterior declaración hemos creado un diccionario |
- | Tanto para acceder al valor de una clave como para crear claves nuevas | + | Utiliza los corchetes '' |
<code python> | <code python> | ||
print (temperaturas[" | print (temperaturas[" | ||
Línea 291: | Línea 298: | ||
</ | </ | ||
- | Para saber si existe un valor asociado a una clave en un diccionario usaremos el operador in igual que con las listas: | + | Para saber si existe un valor asociado a una clave en un diccionario usaremos el operador |
<code python> | <code python> | ||
print ( " | print ( " | ||
</ | </ | ||
- | Si queremos | + | Si deseas |
===Ejercicios=== | ===Ejercicios=== | ||
Línea 302: | Línea 309: | ||
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]] | 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]] | ||
+ | =====4. Instrucciones de Control===== | ||
+ | Aprendamos hoy las instrucciones que un@ programador@ puede incluir en su código que permitan alterar su flujo secuencial. Las // | ||
+ | |||
+ | * **Instrucciones selectivas**: | ||
+ | |||
+ | * **Instrucciones iterativas**: | ||
+ | |||
+ | ==== Instrucciones Selectivas ==== | ||
+ | === If === | ||
+ | La principal instrucción selectiva de Python es '' | ||
+ | |||
+ | Veamos un ejemplo sencillo de uso de una instrucción de este tipo: | ||
+ | |||
+ | <code python> | ||
+ | num = input(" | ||
+ | mul = int(num) * 3 | ||
+ | |||
+ | if (mul > 200): | ||
+ | print ("Has introducido un número muy grande!!" | ||
+ | |||
+ | print (mul) | ||
+ | </ | ||
+ | |||
+ | Lo primero que vemos en el código anterior (este código está en el fichero multi_if.py es que tenemos dos datos numéricos: uno que pedimos por teclado al usuario llamado '' | ||
+ | |||
+ | Tras esto lo que queremos es evaluar el valor de '' | ||
+ | |||
+ | Esto lo hemos conseguido con la instrucción '' | ||
+ | |||
+ | >Nota sobre la tabulación: | ||
+ | ===else=== | ||
+ | A la instrucción '' | ||
+ | <code python> | ||
+ | num = input(" | ||
+ | mul = int(num) * 3 | ||
+ | |||
+ | if (mul > 200): | ||
+ | print ("Has introducido un número muy grande!!" | ||
+ | else: | ||
+ | print (mul) | ||
+ | </ | ||
+ | |||
+ | Con esta variación ahora, si el valor de '' | ||
+ | |||
+ | ====Instrucciones iterativas==== | ||
+ | |||
+ | La otra familia de instrucciones de control de flujo son las **iterativas**, | ||
+ | ===While=== | ||
+ | La primera de estas instrucciones es '' | ||
+ | <code python> | ||
+ | num = input(" | ||
+ | mul = int(num) | ||
+ | |||
+ | while (mul < 200): | ||
+ | mul = mul * int(num) | ||
+ | print (mul) | ||
+ | |||
+ | print ("Ya hemos acabado" | ||
+ | </ | ||
+ | |||
+ | El código anterior toma un número por teclado y lo va multiplicando por si mismo. Vemos que la expresión booleana es '' | ||
+ | ===For=== | ||
+ | Otra instrucción iterativa muy usada en Python es '' | ||
+ | |||
+ | Por ejemplo, partimos de una lista llamada animales. Vamos a imprimir por pantalla un mensaje por cada animal de la lista: | ||
+ | <code python> | ||
+ | | ||
+ | |||
+ | for animal in animales: | ||
+ | print ("Me gustan los " | ||
+ | </ | ||
+ | |||
+ | Tras ejecutar el código anterior veremos una salida similar a la que se muestra a continuación. La variable animal ha ido pivotando su valor entre los valores de la lista siguiendo su orden y valiendo ese valor en cada iteración o vuelta del bucle. El bucle termina cuando ya no hay mas miembros de la lista sobre los que pivotar. | ||
+ | |||
+ | < | ||
+ | Me gustan los perros | ||
+ | Me gustan los gatos | ||
+ | Me gustan los pajaros | ||
+ | Me gustan los zorros | ||
+ | Me gustan los burros | ||
+ | </ | ||
+ | |||
+ | ¿Qué tipos de dato pueden ser recorridos con un bucle '' | ||
+ | |||
+ | ===Range=== | ||
+ | Puede sernos útil conocer la instrucción '' | ||
+ | <code python> | ||
+ | for i in range(10, | ||
+ | print (i) | ||
+ | </ | ||
+ | |||
+ | === Ejercicios === | ||
+ | |||
+ | 1. Pide al usuario dos números e imprime cual de ellos es el mayor. [[Ej4a.py|Solución]]. | ||
+ | |||
+ | 2. Genera una lista de nombres que sigan el siguiente patrón: “doc1”, | ||
+ | |||
+ | =====5. Funciones ===== | ||
+ | Las funciones en programación se utilizan para **agrupar bloques de código bajo un nombre**. Esta técnica permite a los programadores reutilizar estos bloques siempre que quieran sin necesidad de volver a escribirlos, | ||
+ | |||
+ | <code python> | ||
+ | def saludo(): | ||
+ | nombre = input(" | ||
+ | print ("Hola " | ||
+ | </ | ||
+ | |||
+ | Por ejemplo, en el recuadro anterior hemos creado una función llamada '' | ||
+ | |||
+ | <code python> | ||
+ | saludo() | ||
+ | </ | ||
+ | |||
+ | A esto se le llama //invocar// o //llamar a una función//. Podremos crear tantas funciones como queramos y estas pueden contener en su interior las instrucciones que necesitemos. La creación de funciones que agrupen los pequeños problemas que conforman el problema general que quieres | ||
+ | |||
+ | | ||
+ | |||
+ | === Uso de parámetros === | ||
+ | |||
+ | Cuando invocas a una función existe la posibilidad de pasarme diferentes parámetros con información. Esto permite a la función realizar tareas con datos que no están “en su interior” sino que vienen de fuera, del código llamante. Puede sonar complejo pero en realidad no lo es. Veamos esto con un ejemplo. Hemos creado una función llamada '' | ||
+ | |||
+ | <code python> | ||
+ | def mayus(lista): | ||
+ | i=0 | ||
+ | while i< | ||
+ | lista[i] = lista[i].upper() | ||
+ | i=i+1 | ||
+ | </ | ||
+ | |||
+ | el código de '' | ||
+ | |||
+ | Pero ¿de donde sale la lista?. La lista no está declarada en el anterior código. La lista nos llegará cuando se invoque a la función '' | ||
+ | |||
+ | Veamos un ejemplo de como llamaríamos a esta función. Crearemos dos listas diferentes y para convertirlas a ambas a mayúsculas usaremos la función declarada previamente: | ||
+ | |||
+ | <code python> | ||
+ | animales = [" | ||
+ | personas = [" | ||
+ | | ||
+ | mayus(animales) | ||
+ | print (animales) | ||
+ | |||
+ | mayus(personas) | ||
+ | print (personas) | ||
+ | </ | ||
+ | |||
+ | En ambos casos se convierte la lista a mayúsculas usando la función '' | ||
+ | |||
+ | Puedes ver todo este ejemplo completo en el fichero [[mayusculas.py]]. | ||
+ | |||
+ | Podemos declarar funciones con un número mayor de parámetros y en ese caso, en la invocación hemos de respetar el orden de esos parámetros para que la asignación sea correcta: | ||
+ | |||
+ | <code python> | ||
+ | def ejemplo(indice, | ||
+ | print ("El indice vale " | ||
+ | print ("La palabra vale " | ||
+ | print ("El booleano vale " | ||
+ | |||
+ | // Ejemplos de declaración: | ||
+ | |||
+ | ejemplo (9, " | ||
+ | ejemplo (-4, " | ||
+ | ejemplo (321, " | ||
+ | </ | ||
+ | |||
+ | ==== Valores de retorno==== | ||
+ | |||
+ | Una función, además de realizar una serie de operaciones puede retornar un valor a quien la invoca. Este valor puede ser útil para saber como ha ido el trabajo de la función o para recuperar un dato que ella ha generado. Este valor retornado puede ser de cualquier tipo: entero, string, tupla, lista, …. | ||
+ | |||
+ | Para que una función retorne un valor usaremos la instrucción '' | ||
+ | |||
+ | Veamos un ejemplo. Vamos a crear una instrucción que recibe un número entero como parámetro y construye y retorna una lista de los números pares hasta ese número: | ||
+ | |||
+ | <code python> | ||
+ | def construyePares(limite): | ||
+ | pares=[] | ||
+ | for i in range(1, limite+1): | ||
+ | if (i % 2 == 0): | ||
+ | pares.append(i) | ||
+ | |||
+ | return pares | ||
+ | </ | ||
+ | |||
+ | Para recuperar el valor retornado por la lista usaremos una variable junto con su invocación de la siguiente manera: | ||
+ | <code pyhton> | ||
+ | | ||
+ | </ | ||
+ | |||
+ | Ahora tendremos una lista llamada '' | ||
+ | |||
+ | ===Ejercicios=== | ||
+ | |||
+ | 1. Crea una función que reciba un parámetro numérico e informe si es un número primo o no. Úsala para imprimir por pantalla los números primos hasta el '' | ||
+ | |||
+ | ===== 6. Entrada/ | ||
+ | |||
+ | Las funciones y operaciones que se agrupan dentro de este capítulo son las que nos permitirán adjuntar datos a nuestros programas y extraer datos de ellos. Ya conocemos dos de estas funciones: '' | ||
+ | |||
+ | >Estas funciones puede sernos muy útil para conseguir que nuestros programas tengan información perdurable sobre el sistema de ficheros. | ||
+ | |||
+ | antes de empezar a usar los ficheros y luego de terminar de utilizarlos debemos utilizar las funciones de apertura y de cierre de los mismos. | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | La función '' | ||
+ | |||
+ | | **Modo de Trabajo ** | **Resultado** | | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | |||
+ | ===Leer de ficheros === | ||
+ | |||
+ | Para leer un fichero con Python debemos primero indicar al sistema nuestra intención para luego proceder a leerlo. Una vez lo hayamos abierto, sobre el fichero podemos realizar diferentes **operaciones de lectura**. A continuación listo las más comunes: | ||
+ | |||
+ | | '' | ||
+ | | '' | ||
+ | | '' | ||
+ | |||
+ | Veamos dos ejemplos. En este primero leeremos todo el fichero de golpe guardándolo en una sola cadena: | ||
+ | |||
+ | <code python> | ||
+ | fichero = open(" | ||
+ | texto = fichero.read() | ||
+ | fichero.close() | ||
+ | </ | ||
+ | |||
+ | Ahora leeremos todo el fichero pero separado en líneas y nos quedaremos solo con las dos últimas: | ||
+ | |||
+ | <code python> | ||
+ | fichero = open(" | ||
+ | lineas = fichero.readlines()[-2: | ||
+ | fichero.close() | ||
+ | </ | ||
+ | |||
+ | ===Escribir en ficheros === | ||
+ | |||
+ | Para escribir un fichero, las operaciones previas son similares a las de lectura. Necesitamos ejecutar '' | ||
+ | |||
+ | | '' | ||
+ | | '' | ||
+ | |||
+ | Si queremos escribir manualmente un salto del línea para separar dos líneas entre sí hemos de escribir el carácter '' | ||
+ | |||
+ | <code python> | ||
+ | fichero = open(" | ||
+ | fichero.write(" | ||
+ | fichero.write(" | ||
+ | fichero.write(" | ||
+ | fichero.close() | ||
+ | </ | ||