Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
Tipos de lenguajes de programación HISTORIA DE LOS LENGUAJES DE PROGRAMACIÓN Los primeros lenguajes de programación surgieron de la idea de Charles Babagge, a principios del siglo XIX. Este era un profesor de matemáticas en la Universidad de Cambridge, que predijo muchas de las teorías en que se basan las actuales computadoras. Estas consistía en lo que él denominaba la maquina analítica, pero que por motivos técnicos no pudo construirse hasta mediados del siglo XX. Con él colaboro Ada Lovedby, la cual es considerada como la primera programadora de la historia, pues realizo programas para aquélla supuesta maquina de Babagge, en tarjetas perforadas. El uso de tarjetas se inspiró en la creación de Charles Jacquard (francés). Este hombre era un fabricante de tejidos y había creado un telar que podía reproducir automáticamente patrones de tejidos, leyendo la información codificada en patrones de agujeros perforados en tarjetas de papel rígido. Como la maquina no llego nunca a construirse, los programas de Ada, lógicamente, tampoco llegaron a ejecutarse, pero supuso un punto de partida de la programación, sobre todo si observamos que en cuanto se empezó a programar, los programadores utilizaron las técnicas diseñadas por Charles Babagge, y Ada. En 1823 el gobierno Británico apoyo a Babagge para crear el proyecto de una máquina analítica, un dispositivo mecánico para efectuar sumas repetidas. Entonces Babagge intento crear la máquina que se pudiera programar con tarjetas perforadas para efectuar cualquier cálculo con una precisión de 20 dígitos. Pero la tecnología de la época no bastaba para hacer realidad sus ideas. Si bien las ideas de Babagge no llegaron a materializarse de forma definitiva, su contribución fue decisiva, ya que las computadoras actuales responden a un esquema análogo al de la máquina analítica. En su diseño, la máquina constaba de cinco unidades básicas: 1. Unidad de entrada, para introducir datos e instrucciones 2. Memoria, donde se almacenaban datos y resultados intermedios 3. Unidad de control, para regular la secuencia de ejecución de las operaciones 4. Unidad Aritmético-Lógica, que efectúa las operaciones 5. Unidad de salida, encargada de comunicar al exterior los resultados. ¿Qué son los lenguajes de programación? Los lenguajes de programación son conjuntos limitados de palabras y de símbolos que representan procedimientos, cálculos y otras operaciones que llevan a cabo las computadoras. Lenguajes de programación compilados: Cuando los programas de una computadora se traducen a código máquina antes de ejecutarse, tiene lugar un lenguaje de programa compilado. Se diferencia sustancialmente del lenguaje interpretado, porque en este último los programas se traducen y también se ejecutan por instrucción. Ejemplos: FORTRAN, C/C++, Ada, Julia, C#, etc. Lenguajes de programación interpretados: Son una alternativa diferente de los compiladores, que se aplican cuando es necesario traducir lenguajes de alto nivel. En vez de traducir el programa principal para luego grabarlo de manera permanente en el código del objeto, se produce la corrida de compilación para ser usado en una corrida de producción posterior. El programador únicamente carga el programa principal en la computadora, junto con todos los datos que serán procesados. Ejemplos: BASIC, MATLAB, MATEMATICAS, MAXIMA. Lenguajes de programación declarativos: Son aquellos en los cuales se le indica a la computadora cuál es el objetivo planteado, y que se desea obtener. De esta manera se utilizan buscadores o bases de datos, y se traducen las palabras de la búsqueda a la computadora que efectuará la acción. Ejemplo: SQL, HTML, XML. Lenguajes de programación de descripción de máquina: Son programas como, por ejemplo, PostScript, que se utilizan para denominar la salida a una impresora, traducirla y seguir las instrucciones del lenguaje de descripción de la página para construir el texto y también los gráficos, que darán lugar a la creación de la imagen en la página. El lenguaje de descripción de página es como otros lenguajes de la computadora, pero con un programa indexado que le permitirá al usuario la manipulación de la salida. Lenguajes de programación imperativos: En ciencias de la computación se llama lenguajes imperativos a aquellos en los cuales se le ordena a la computadora cómo realizar una tarea siguiendo una serie de pasos o instrucciones. Ejemplos: BASIC, C, C++, Java, Clipper, Dbase, C#, PHP, Perl, etc. Lenguajes de programación procedurales: En los lenguajes procedurales, es la aplicación quien controla qué porciones de código se ejecuta, y la secuencia en que este se ejecuta. La ejecución de la aplicación se inicia con la primera línea de código, y sigue una ruta predefinida a través de la aplicación, llamando procedimientos según sea necesario. Ejemplos: PASCAL, ADA, ALGOL. Lenguajes de programación funcional: La programación funcional es un paradigma de programación declarativa basado en la utilización de funciones matemáticas. El objetivo de la programación funcional es conseguir lenguajes expresivos y matemáticamente elegantes. Otras características propias de estos lenguajes son la no existencia de asignaciones de variables y la falta de construcciones estructuradas como la secuencia o la iteración (lo que obliga en la práctica a que todas las repeticiones de instrucciones se lleven a cabo por medio de funciones recursivas). Ejemplo: Python, HASKEL. Lenguajes orientados a objetos: En la Programación Orientada a Objetos (POO u OOP según siglas en inglés) se definen los programas en términos de "clases de objetos", los objetos que son entidades que combinan estado (es decir, datos) comportamiento (esto es, procedimientos o métodos) e identidad (propiedad del objeto que lo diferencia del resto). La programación orientada a objetos expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los programas módulos más fáciles de escribir, mantener y reutilizar. Ejemplos: Python, C++, Modula, FORTRAN90, SmallTalk, PHP. Lenguajes de programación de tipado estáticos: Son todas las expresiones que antes de la ejecución del programa se encargan de compilar los datos. Son expresiones enteras. Que no pueden ser pasadas a una función que espera una cadena, ni pueden almacenarse en una variable que está definida como fecha. No se pueden modificar, pero sí pueden manejar tipos explícitos o tipos inferidos. Ejemplo C/C++, JAVA. Lenguajes de programación de tipado dinámicos: Son los que determinan la validez de los tipos programáticos involucrados en las operaciones durante la ejecución del programa. Los lenguajes dinámicos, a diferencia de los estáticos, pueden ser manipulados, y una misma variable puede ser asociada a distintos valores en diferentes momentos de la ejecución del programa. Ejemplo: Python ¿Qué es un dato? Los datos informáticos son un conjunto de atributos y valores que definen las operaciones que se van a procesar en una computadora. Si se les quiere dar un valor ajeno a su tipo se generará un error. Forman parte de un lenguaje de programación propia de la informática, aunque también tiene relación con otras ciencias formales como la lógica y matemática. Dinámicos: en este grupo se encuentra el puntero, un tipo complejo que ayuda a tener un control mejorado sobre la gestión de la memoria de los programas. Permiten manejar el tamaño de las variables cuando se está ejecutando una operación. Estáticos: el espacio que ocupan en la memoria no varía mientras se ejecuta un programa determinado. Esto quiere decir que se declara una variable en especial y se le da un tamaño fijo de memoria que no se puede modificar. Éstos pueden ser: 1. Estructurados: constan de colecciones de elementos variados: existen las ordenadas que se representan a través del tipo array, las sin orden mediante el conjunto y las que tienen otros tiposque son llamados registros. Pueden modificarse de un lenguaje a otro. 2. Dato cadena de caracteres (string): la cadena es un conjunto de caracteres continuos que pueden contenerse en una sola variable. Para establecerlas hay que definirlas con vectores de caracteres, o sea, colocando antes la palabra char al identificador y después entre corchetes el largo más grande de cadena: char cadena[20]; char cadena[20] = “Hola mundo”. 3. Simples: son los más sencillos y básicos, fáciles de comprender. La gran parte de los lenguajes de programación los soporta. Éstos son: Ordinales: al grupo de valores que se le puede establecer un vínculo entre sus componentes y el conjunto de los números naturales. Los más relevantes son: 1. Dato carácter (char): se emplea para tener objetos que representen signos tipográficos como letras, signos de puntuación, números o espacios. Los caracteres deben pertenecer a un cierto código usado en la computadora (es normal que sea con el código ASCII). Para identificarlos, se antepone la palabra reservada char a la variable: char identificador = ‘valor’. 2. Dato entero (integer): en computación es aquel que permite representar un subconjunto determinado y finito de números enteros, sin parte decimal. El más grande que puede presentar depende del tamaño del espacio utilizado por el dato y la probabilidad existente –o no- de representar números negativos. También, están sometidos del lenguaje de programación adaptado así como la estructura en cuestión. Por ejemplo, si se necesita almacenar una cifra entera y se disponen 4 bytes de memoria, se multiplica 4 por 8 y da 32 bits, con los que se pueden representar 4294967296 valores: positivos del o al 4294967296 y negativos-positivos -2147483648 al 2147483647. 3. Dato lógico (boolean): es el que permite representar valores de la lógica binaria, es decir, utilizar variables que sólo disponen de dos valores: verdadero o falso. En general, es usado en estadística, matemática, electrónica, programación, entre otros. Ayudan a mantener el estado de un objeto de un objeto determinado a través de dos consideraciones: on/off, si/no, verdadero/falso, error/no error, etcétera. Ejemplo: (3>2)= 1 = cierto, (7>9)= 0 = falso. No ordinales: posibilitan declarar variables que pueden tener valores dentro de los números con partes decimales. Por lo tanto, no se pueden contar y las relaciones entre sus elementos y los números naturales no se puede realizar: 1. Dato real (float): se utilizan para representar números reales, o sea, con decimales. Para los cálculos es un tipo muy importante. En las estadisticas se observan mucho ya que tratan con variables decimales. Se antepone la palabra float para identificarlos. Por ejemplo: float numero1, numero2; float numero3 = 123.43. Python Principales Características de Python Python es un lenguaje de programación creado por Guido van Rossum a finales de los ochenta (el nombre Python viene del programa inglés Monthy Python), y que gracias a sus características ha llegado a ser un lenguaje muy conocido en la actualidad. A continuación se listan las principales características que este lenguaje posee: Simple: Python es un lenguaje muy simple, por lo que es muy fácil iniciarse en este lenguaje. El pseudo-código natural de Python es una de sus grandes fortalezas. Propósito General: Usando el lenguaje Python se puede crear todo tipo de programas; programas de propósito general y también se pueden desarrollar páginas Web. Open Source: Debito a la naturaleza de Python de ser Open Suorce; ha sido modificado para que pueda funcionar en diversas plataformas (Linux, Windows, Macintosh, Solaris, OS/2, Amiga, AROS, AS/400, BeOS, OS/390, z/OS, Palm OS, QNX, VMS, Psion, Acorn RISC OS, VxWorks, PlayStation, Sharp Zaurus, Windows CE y PocketPC). Lenguaje Orientado a Objetos: Al ser un Lenguaje Orientado a Objetos es construido sobre objetos que combinan datos y funcionalidades. Lenguaje de Alto Nivel: Al programar en Python no nos debemos preocupar por detalles de bajo nivel, (como manejar la memoria empleada por el programa). Incrustable: Se puede insertar lenguaje Python dentro un programa C/C++, FORTRAN90 y de esta manera ofrecer las facilidades del scripting. Extensas Bibliotecas: Python contiene una gran cantidad de bibliotecas (informalmente en el mundo informático se les dice 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. Las librerías pueden ayudar a hacer varias cosas como expresiones regulares, generación de documentos, evaluación de unidades, pruebas, procesos, bases de datos, navegadores web, CGI, ftp, correo electrónico, XML, XML-RPC, HTML, archivos WAV, criptografía, GUI, y también otras funciones dependientes del Sistema. Sintaxis clara: Python tiene una sintaxis muy visual, gracias a que maneja una sintaxis identada (con márgenes), que es de caracter obligatorio. Para separar los bloques de código en Python se debe tabular hacia dentro. Esto ayuda a que todos los programadores adopten las mismas notaciones y que los programas hechos en Python tengan un aspecto muy similar. Conceptos fundamentales de la programación orientada a objetos (POO) Como ejemplo de objeto tomo las matrices, pues matriz es en si un meta concepto el cual involucra a un conjunto de arreglo de números sobre los cuales se define operaciones de cuerpo como ser la suma y el producto entre matrices, así como operaciones de producto por un escalar. Por lo que matriz ≉ arreglo, error común que se incurre en muchos cursos de computación. Entre los conceptos nuevos de la POO se destacan: Clase: Definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ella. Herencia: Por ejemplo, herencia de la clase C a la clase D, es la facilidad mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos métodos y variables públicas declaradas en C. Los componentes registrados como "privados" (private) también se heredan, pero como no pertenecen a la clase, se mantienen escondidos al programador y sólo pueden ser accedidos a través de otros métodos públicos. En el caso de los componentes registrados como "protegidos" (protected) también se heredan, pero solo para esa clase, no para futuras clases heredadas. Objeto: Instancia de una clase. Entidad provista de un conjunto de propiedades o atributos (datos) y de comportamiento o funcionalidad (métodos), los mismos que consecuentemente reaccionan a eventos. Se corresponden con los objetos reales del mundo que nos rodea, o con objetos internos del sistema (del programa). Método: Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un método puede producir un cambio en las propiedades del objeto, o la generación de un "evento" con un nuevo mensaje para otro objeto del sistema. Evento: Es un suceso en el sistema (tal como una interacción del usuario con la máquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede definir como evento la reacción que puede desencadenar un objeto; es decir, la acción que genera. Atributos: Características que tiene la clase. Mensaje: Una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó. Estado interno: Es una variable que se declara privada, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situacionesposibles para el objeto (o clase de objetos). No es visible al programador que maneja una instancia de la clase. Características de la POO Abstracción: Denota las características esenciales de un objeto, donde se capturan sus comportamientos. Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar "cómo" se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos, y, cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción. El proceso de abstracción permite seleccionar las características relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstracción es clave en el proceso de análisis y diseño orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar. Encapsulación: Significa reunir todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión (diseño estructurado) de los componentes del sistema. Polimorfismo: Comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre; al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O, dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios estáticos (en "tiempo de compilación") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++. Modularidad: Se denomina "modularidad" a la propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes. Estos módulos se pueden compilar por separado, pero tienen conexiones con otros módulos. Al igual que la encapsulación, los lenguajes soportan la modularidad de diversas formas. Recolección de basura: La recolección de basura (garbage collection) es la técnica por la cual el entorno de objetos se encarga de destruir automáticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo objeto y la liberará cuando nadie lo esté usando. En la mayoría de los lenguajes híbridos que se extendieron para soportar el Paradigma de Programación Orientada a Objetos como C++ o FORTRAN99, esta característica no existe y la memoria debe liberarse expresamente. Códigos Paradigma # sucesion de Fobonacci # el identado (4 espacios) define # el ámbito de la estructura de control a, b = 0, 1 while b<10: print b a, b=b , a+b Se lo guarda en un archivo ASCII cómo paradigma.py (extensión no obligatoria) y se lo ejecuta desde una terminal vt220como: $ python codigo_paradigma.py 1 1 2 3 5 8 Probar que pasa con estos códigos a,b=0,1 while b<50: print b, a,b=b,a+b # pirámide de Tartaglia def facto(x): return (1 if x==0 else x*facto(x-1)) def pot2(x): return (1 if x==0 else 2*pot2(x-1)) n=32 for i in range(n): for j in range(i+1): print (facto(i)/(facto(j)*facto(i-j))), print #Ejemplo de multiparadigma a=['gato', 'perro', 'caca'] for x in a: print x, len(x) for x in range(len(a)): print x, a[x] Tipos de datos básicos en Python NOTA: Todos los tipos básicos en Python, a diferencia de C/C++ y FORTRAN90, son objetos propios del lenguaje o lo que en inglés se llama build-in. Enteros: Los números enteros son aquellos que no tienen decimales, tanto positivos como negativos (además del cero). En Python se pueden representar mediante el tipo int (de integer, entero asignación heurística) o el tipo long (largo). La única diferencia es que el tipo long permite almacenar números más grandes. Es aconsejable no utilizar el tipo long a menos que sea necesario, para no malgastar memoria. Podemos indicar a Python que un número se almacene usando long añadiendo una L al final, por ejemplo entero=23L. Flotantes o Reales: Los números reales son los que tienen decimales. En Python se expresan mediante el tipo float (heurístico). En otros lenguajes de programación, como C, tenemos también el tipo double, similar a float pero de mayor precisión (double = doble precisión). Python, sin embargo, implementa su tipo float a bajo nivel mediante una variable de tipo double de C, es decir, utilizando 64 bits, luego en Python siempre se utiliza doble precisión, y en concreto se sigue el estándar IEEE 754. real = 0.2703 o real = 0.1e-3. Complejos: Los números complejos en Python se representan de la siguiente forma complejo = 2.1 + 7.8j (heurístico). Cadenas o String: Las cadenas no son más que texto encerrado entre comillas simples (‘cadena’) o dobles (“cadena”). Dentro de las comillas se pueden añadir caracteres especiales escapándolos con ‘\’, como ‘\n’, el carácter de nueva línea, o ‘\t’, el de tabulación. Una cadena puede estar precedida por el carácter ‘u’ o el carácter ‘r’, los cuales indican, respectivamente, que se trata de una cadena que utiliza codificación Unicode y una cadena raw (del inglés, cruda). Las cadenas también admiten operadores como la suma (concatenación de cadenas) y la multiplicación. a = "uno" b = "dos" c = a + b # c es "unodos" c = a * 3 # c es "unounouno" Booleanos: El tipo booleano sólo puede tener dos valores: True (cierto) y False (falso). Estos valores son especialmente importantes para las expresiones condicionales y los bucles, como veremos más adelante. Listas (mutables), túplas (inmutables), diccionarios y conjuntos (set) Las listas, tuplas, diccionarios y conjuntos (set) son estructuras que permiten trabajar con colecciones de datos. El primer elemento de una lista o de una tupla es el 0. Lista: Una lista es una estructura de datos que contiene una colección o secuencia de datos. Los datos o elementos de una lista deben ir separados con una coma y todo el conjunto entre corchetes. Se dice que una lista es una estructura mutable porque además de permitir el acceso a los elementos, pueden suprimirse o agregarse nuevos. ListaEstaciones = [“Invierno”, “Primavera”, “Verano”, “Otoño”] # Declara lista Tuplas: Una tupla permite tener agrupados un conjunto inmutable de elementos, es decir, en una tupla no es posible agregar ni eliminar elementos. Las tuplas se declaran separando los elementos por comas y éstos, opcionalmente, pueden ir entre paréntesis. TuplaDiasSemana = “LU”, “MA”, “MI”, “JU”, “VI”, “SA”, “DO” Diccionarios: Los diccionarios son objetos que contienen una lista de parejas de elementos. De cada pareja un elemento es la clave, que no puede repetirse, y, el otro, un valor asociado. La clave que se utiliza para acceder al valor tiene que ser un dato inmutable como una cadena, mientras que el valor puede ser un número, una cadena, una lista o una tupla. Los pares clave-valor están separados por dos puntos y las parejas por comas y todo el conjunto se encierra entre llaves. capitales = {'Chile':'Santiago', 'España':'Madrid', 'Francia':'París'} Conjuntos: Un conjunto es una lista de elementos donde ninguno de ellos está repetido. A partir de una lista, en la que pueden haber elementos repetidos, con set podemos crear otra lista con todos los elementos sin repetir ninguno. Además, si tenemos varias listas podemos realizar operaciones deconjuntos de unión, diferencia, intersección y diferencia simétrica. lista = ['vino', 'cerveza', 'agua', 'vino'] # define lista bebidas = set(lista) # define conjunto a partir de una lista print('vino' in bebidas) # True, 'vino' está en el conjunto print('anis' in bebidas) # False, 'anis' no está en el conjunto print(bebidas) # imprime {'agua', 'cerveza', 'vino'} Códigos Paradigma Cadenas cadena1 = 'tengo una yama que Yama se llama' # declara variable lista1 = ['pera', 'manzana', 'naranja', 'uva'] # declara lista longitud = len(cadena1) # 32, devuelve longitud de la cadena elem = len(lista1) # 4, devuelve nº elementos de la lista cuenta = cadena1.count('yama') # 1, cuenta apariciones de la palabra 'yama' print(cadena1.find('yama')) # 10, devuelve posición del elemento buscado cadena2 = cadena1.join('***') # inserta cadena1 entre caracteres lista1 = cadena1.split(' ') # divide cadena por separador lista→ tupla1 = cadena1.partition(' ') # divide cadena por separador → tupla cadena2 = cadena1.replace('yama','cabra',1) # busca y sustituye términos numero = 3.14 # asigna número con decimales cadena3 = str(numero) # convierte número a cadena if cadena1.startswith("tengo"): # evalúa si cadena1 comienza por “tengo”: True if cadena1.endswith("llama"): # evalúa si cadena1 termina por “llama”: True if cadena1.find("llama") != -1: # evalúa si cadena1 contiene la palabra “llama” cadena4 = 'Python' # asigna una cadena a una variable print(cadena4[0:4]) # muestra desde la posición 0 a 4: "Pyth" print(cadena4[1]) # muestra la posición 1: "y" print(cadena4[:3] + '-' + cadena4[3:]) # muestra "Pyt-hon" print(cadena4[:-3]) # muestra todo menos las tres últimas: "Pyt" cadena5 = " abc;123 " # declara una variable con una cadena alfanumérica print(cadena5.rstrip()) # suprime caracteres en blanco (y \t\n\r) por la derecha: " abc;123" print(cadena5.lstrip()) # suprime caracteres en blanco (y \t\n\r) por la izquierda: "abc;123 " print(cadena5.strip()) # suprime caracteres en blanco (y \t\n\r) por la derecha e izquierda: "abc;123" print(cadena5.strip("123456790; ")) # suprime caracteres del argumento por la derecha e izquierda: "abc" cadena6 = "Mar" # declara una variable print(cadena5.upper()) # convierte la cadena a mayúsculas: "MAR" print(cadena5.lower()) # convierte la cadena a minúsculas: "mar" Listas y tuplas lista1 = ['uno', 2, True] # declara una lista heterogénea lista2 = [1, 2, 3, 4, 5] # declara lista numérica (homogénea) lista3 = ['nombre', ['calle', 'ciudad']] # declara una lista dentro de otra lista4 = [54,45,44,22,0,2,99] # declara una lista numérica print(lista1) # ['uno', 2, True], muestra toda la lista print(lista1[0]) # uno, muestra el primer elemento de la lista print(lista2[-1]) # 5, muestra el último elemento de la lista print(lista3[1][0]) # calle, primer elemento de la lista anidada print(lista2[0:3:1]) # [1, 2, 3], responde al patrón inicio:fin:paso print(lista2[::-1]) # devuelve la lista ordenada al revés lista1[2] = False # cambia el valor de un elemento de la lista lista2[-2] = lista2[-2] + 1 # 4 + 1 5 – cambia el valor de un → elemento lista2.pop(0) # borra elemento indicado o último si no indica lista1.remove('uno') # borra el primer elemento que coincida del lista2[1] # borra el segundo elemento (por índice) lista2 = lista2 + [6] # añadiendo un elemento al final de la lista lista2.append(7) # añade un elemento al final con append() lista2.extend([8, 9]) # extiende la lista con otra lista por el final lista1.insert(1, 'dos') # inserta nuevo elemento en una posición del lista2[0:3] # borra los elementos desde:hasta lista2[:] = [] # borra todos los elementos de la lista print(lista1.count(2)) # cuenta el nº de veces que aparece 2 print(lista1.index("dos")) # busca la posición que ocupa un elemento lista3.sort() # ordena la lista lista3.sort(reverse=True) # ordena la lista en orden inverso lista5 = sorted(lista4) # ordena lista destino tupla1 = (1, 2, 3) # declara una tupla (se usan paréntesis)... tupla2 = 1, 2, 3 # ...aunque pueden declararse sin paréntesis tupla3 = (100,) # con un solo un elemento hay que poner “,” tupla4 = tupla1, 4, 5, 6 # anida tuplas tupla5 = () # declara una tupla vacía tupla2[0:3] # (1, 2, 3), accede a los valores desde:hasta Diccionarios dic1 = { 'Lorca' : 'Escritor', 'Goya' : 'Pintor'} # declara diccionario print(dic1) # {'Goya': 'Pintor', 'Lorca': 'Escritor'} dic2 = dict((('mesa', 5), ('silla', 10))) # declara a partir de una tupla dic3 = dict(ALM=5, CAD=10) # declara a partir de cadenas simples dic4 = dict([(z, z**2) for z in (1, 2, 3)]) # declara a partir de patrón print(dic4) # muestra {1: 1, 2: 4, 3: 9} print(dic1['Lorca']) # escritor, acceso a un valor por clave print(dic1.get('Gala', 'no existe')) # acceso a un valor por clave if 'Lorca' in dic1: print('está') # comprueba si existe una clave print(dic1.items()) # obtiene una lista de tuplas clave:valor print(dic1.keys()) # obtiene una lista de las claves print(dic1.values()) # obtiene una lista de los valores dic1['Lorca'] = 'Poeta' # añade un nuevo par clave:valor dic1['Amenabar'] = 'Cineasta' # añade un nuevo par clave:valor dic1.update({'Carreras' : 'Tenor'}) # añadir con update() del dic1['Amenábar'] # borra un par clave:valor print(dic1.pop('Amenabar', 'no está')) # borra un par clave:valor Conjuntos lista = ['vino', 'cerveza', 'agua', 'vino'] # define lista bebidas = set(lista) # define conjunto a partir de una lista print('vino' in bebidas) # True, 'vino' está en el conjunto print('anis' in bebidas) # False, 'anis' no está en el conjunto print(bebidas) # imprime {'agua', 'cerveza', 'vino'} bebidas2 = bebidas.copy() # crea nuevo conjunto a partir de copia print(bebidas2) # imprime {'agua', 'cerveza', 'vino'} bebidas2.add('anis') # añade un nuevo elemento print(bebidas2.issuperset(bebidas)) # True, bebidas es un subconjunto bebidas.remove('agua') # borra elemento print(bebidas & bebidas2) # imprime elementos comunes tapas = ['croquetas', 'solomillo', 'croquetas'] # define lista conjunto = set(tapas) # crea conjunto (sólo una de croquetas) if 'croquetas' in conjunto: # evalúa si croquetas está en conjunto conjunto1 = set('Python') # define conjunto: P, y, t, h, o, n conjunto2 = set('Pitonisa') # define conjunto: P, i, t, o, n, s, a print(conjunto2 - conjunto1) # aplica diferencia: s, i, a print(conjunto1 | conjunto2) # aplica unión: P, y, t, h, o, n, i, s, a print(conjunto1 & conjunto2) # aplica intersección: P, t, o, n print(conjunto1 ^ conjunto2) # aplica diferencia simétrica: y, h, i, s, a Códigos Paradigma Códigos Paradigma
Compartir