Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Teoría Apuntes Informática, Apuntes de Informática

Apuntes informática examen final teoría 2025/2026

Tipo: Apuntes

2025/2026

Subido el 08/01/2026

xavier-abio-buil
xavier-abio-buil 🇪🇸

1 documento

1 / 192

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
/
Informática
Última actualización del documento: 2019.08.30
Este documento está basado en parte en material previo de los profesores de Informática de la EEBE, pertenecientes a los
departamentos de Ciencias de la Computación y de Ingeniería de Sistemas, Automática e Informática Industrial de la UPC.
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49
pf4a
pf4b
pf4c
pf4d
pf4e
pf4f
pf50
pf51
pf52
pf53
pf54
pf55
pf56
pf57
pf58
pf59
pf5a
pf5b
pf5c
pf5d
pf5e
pf5f
pf60
pf61
pf62
pf63
pf64

Vista previa parcial del texto

¡Descarga Teoría Apuntes Informática y más Apuntes en PDF de Informática solo en Docsity!

Informática

Última actualización del documento: 2019.08.

Este documento está basado en parte en material previo de los profesores de Informática de la EEBE, pertenecientes a los departamentos de Ciencias de la Computación y de Ingeniería de Sistemas, Automática e Informática Industrial de la UPC.

Índice

  • Índice
  • Capítulo 1. Primeros pasos para aprender a programar
    • Python
    • Algoritmos, programas y lenguajes
    • Variables
      • La codificación de información en sistema binario
      • ¿Como declaramos variables en Python?
      • ¿Qué ocurre realmente en Python al declarar una variable o asignarle un valor?
      • Identificadores y palabras reservadas
    • Tipos de datos
      • Tipos de datos simples
        • Enteros (int)
        • Reales (float)
        • Booleanos (bool)
      • Tipos de datos compuestos
        • Cadena de caracteres o string (str)
  • Capítulo 2. Expresiones y funciones
    • Expresiones
      • Operadores
        • Operadores aritméticos
        • Operadores de asignación aumentada
        • Operadores lógicos
      • Operadores relacionales
      • Precedencia de los operadores
        • Operaciones con strings
    • Errores
      • Errores sintácticos
      • Errores de ejecución
      • Errores semánticos
      • Ejercicios propuestos (expresiones)
    • Acciones elementales
      • Lectura de datos a través del teclado
      • Escritura de datos por pantalla
      • Comentar el código
      • ¿Qué es una función y para qué sirve?
      • Uso de funciones
      • Diseño de funciones
      • Invocación de funciones
      • Funciones productivas y funciones nulas
      • Consideraciones a tener en cuenta en el diseño de funciones
        • Programa principal
        • Docstring y Doctest
      • Más sobre funciones
  • Capítulo 3. Estructuras algorítmicas
    • Composición secuencial
      • Ejercicios propuestos (composición secuencial)
    • Composición alternativa
      • Estructura alternativa simple (if)
      • Estructura alternativa doble (if-else)
      • Estructura alternativa múltiple (if-elif-else)
    • Ejemplos de programas con composición alternativa
      • Ejemplo 1. Paso de cronómetro
      • Ejemplo 2. Calcular si un año es bisiesto
      • Ejercicios propuestos (composición alternativa)
  • Capítulo 4. Estructuras algorítmicas (II)
    • Composición iterativa (for)
      • Secuencias de enteros con range
        • Operadores y funciones aplicables a una secuencia de tipo range
      • Secuencias de caracteres (strings)
        • Métodos de los strings
    • Esquemas de composición iterativa con for
      • Esquema de recorrido
      • Esquema de búsqueda
      • Ejemplos de esquemas de recorrido con for
        • Contar de 1 a
        • Contar de 1 a N
        • Tablas de multiplicar
      • Ejemplos de esquemas de búsqueda con for
        • Buscar si una letra está contenida en un string
        • Buscar el primer número de 3 cifras que es múltiplo de otro número
  • Capítulo 5. Ejercicios de composición iterativa: esquemas de recorrido
    • Contar palabras
      • Solución
      • Solución mejorada
      • Solución alternativa con Python (sin esquema de recorrido)
    • Eliminar letra de un string
      • Solución
    • Integral definida, calculada por intervalos fijos
      • Solución
    • Calcular todos los divisores de un número
      • Solución
  • Capítulo 6. Ejercicios de composición iterativa: esquemas de búsqueda
    • Encontrar la posición de la tercera aparición de una letra en un string
      • Solución
      • Solución alternativa
    • Comprobar si dos textos son iguales
      • Solución
      • Solución alternativa sin bucles
    • Eliminar espacios iniciales y finales de un string
      • Solución
    • Comprobar si un número es primo
      • Solución
  • Capítulo 7. Tipos de datos estructurados
    • Tipos de datos estructurados inmutables (estáticos)
      • Secuencias de caracteres (string)
      • Secuencias de enteros (range)
      • Secuencia de datos (tuple)
        • Indexación, slicing y otras operaciones con tuplas
        • Iteraciones con tuplas
        • Asignaciones múltiples
        • Funciones con resultados múltiples
        • Funciones con un número arbitrario de parámetros
        • Funciones y métodos con las tuplas
      • Conjuntos “congelados” de datos (frozenset)
    • Tipos de datos estructurados mutables (dinámicos)
      • Listas de datos (list)
        • Indexación, slicing y otras operaciones con listas
        • Métodos de las listas
        • Identidad de las variables en Python: ¿qué sucede con las listas?
    • Ejercicios con listas
      • Revisando un ejemplo anterior: calcular los divisores de un número
      • Suma vectorial
        • Solución
        • Solución alternativa
      • Producto escalar
        • Solución
      • Determinar si una secuencia de números es monótona creciente
        • Solución
      • Encontrar el primer valor negativo en una lista de números
        • Solución
      • Lista de números primos en un intervalo
        • Solución
      • Encontrar anagramas en una lista de palabras
        • Solución
    • Ejercicios de polinomios usando listas
      • Evaluación de una función polinómica
        • Solución
      • Derivada de un polinomio
        • Solución
      • Suma de polinomios
        • Solución
        • Solución alternativa
    • Una manera diferente de definir listas: list comprehensions
      • Otra vez los números primos
    • Dudas y preguntas sobre listas planteadas en clase
      • ¿Cómo puedo insertar los elementos de una lista en otra lista?
      • ¿Cómo puedo eliminar varios elementos de una lista?
      • ¿Cómo generar una lista de números enteros aleatorios?
      • genera números aleatorios? ¿Cómo puedo crear un docstring adecuado para el doctest de una función que
      • ¿Como pedir varios datos al usuario sin tener que poner múltiples input()?
  • Capítulo 8. Iteraciones con while
    • Recordatorio de la composición iterativa
    • La sentencia while
      • Equivalencia entre for y while
    • Esquemas de recorrido y de búsqueda con while
    • Ejemplos con while
      • Lista de divisores de un número
        • Solución
      • Comprobar si un número es primo
        • Solución
      • Contar palabras
        • Solución
      • Eliminar espacios iniciales y finales de un string
        • Solución
    • Ejemplos “naturales” con while
      • Máximo común divisor con el Algoritmo de Euclides
        • Solución
      • Adivinar un número
        • Solución
        • Solución robusta mediante try-except
      • Calcular integral por aproximaciones sucesivas
        • Solución
      • Cálculo del seno mediante la aproximación de Taylor
        • Solución
      • Conversión de entero a string con representación binaria
        • Solución
      • Búsqueda y ordenación
      • Fusión ordenada de listas
        • Solución
      • Fusión ordenada de listas sin repetición de elementos
        • Solución
  • Capítulo 9. Tipos de datos estructurados (II)
    • Listas 2D (listas de listas)
      • Asignación estática
      • Asignación dinámica
        • Crear una matriz de ceros con un número de filas y columnas variable
        • Solución
      • Copia profunda
        • Limitaciones
      • Acceso a filas, columnas, y elementos
        • Número de filas y columnas
        • Iteraciones anidadas
        • Acceso a filas y columnas
        • Ordenar por filas
      • Listas 3D
    • Ejercicios
      • Suma de matrices
        • Solución
        • Solución alternativa
      • Matriz simétrica
    • Ejercicios con listas 2D
      • Transponer una matriz cuadrada
        • Solución
      • Determinante de una matriz 3 x
        • Solución
      • Producto de matrices no cuadradas
        • Solución
      • Matriz cuasi nula
        • Solución
      • Calcular sobrecoste de factura en lista de clientes
        • Solución
      • Recalcular sobrecoste de factura en lista de clientes
        • Solución
  • Capítulo 10. Tipos de datos estructurados (III)
    • Conjuntos de datos (set)
    • Diccionarios (dict)
      • Operaciones con diccionarios
      • Convertir listas en diccionarios y viceversa
    • Ejercicios con diccionarios
      • Frecuencias
        • Solución
      • Frecuencias
        • Solución
      • Número más frecuente (moda)
        • Solución
      • Histograma
        • Solución
      • Pasar lista 2D (nombres, teléfonos, y direcciones) a diccionario
        • Solución
      • Tiradas de dados
        • Solución
      • Descodificador de fechas
        • Solución
      • Fusión de lista de diccionarios
        • Solución
  • Capítulo 11. Entrada y salida de datos con ficheros
    • Abrir y cerrar ficheros
      • Función open()
      • Atributos el objeto file
      • Método file.close()
    • Leer y escribir ficheros
      • Método file.read()
      • Método file.write()
    • Ejemplos
      • Ejemplos básicos de escritura y lectura
      • Leer fichero por completo y extraer líneas
      • Leer fichero línea a línea
      • La instrucción with (forma recomendada de leer y escribir ficheros)
      • Añadir contenido a un fichero ya existente
    • Ficheros CSV (módulo csv)
      • Leer y escribir ficheros CSV
    • Ejercicios
      • Función que muestra las primeras N líneas de texto de un fichero por pantalla
      • Sumar números en un fichero de texto con un número por línea
      • Sumar números en un fichero de texto con varios números por línea
      • Retornar columna de fichero de texto con números
      • Contar número de apariciones de una palabra en un fichero
      • Contar número de apariciones de cada palabra en un fichero
  • Capítulo 12. Algoritmos de búsqueda y ordenación
    • Búsqueda
      • Búsqueda secuencial
      • Búsqueda dicotómica (binary search)
    • Ordenación
      • Ordenación por burbuja (bubble sort)
      • Ordenación por inserción (insertion sort)
      • Ordenación por mezcla (merge sort)
      • Otros algoritmos de ordenación

programación explicada, y no tanto de aprender todo lo que Python puede ofrecer (por el momento).

Python

Python es un lenguaje de programación potente pero fácil de usar, desarrollado por el holandés Guido van Rossum, quien publicó la primera versión en 1991.

El objetivo de cualquier lenguaje de programación es hacer de puente entre el cerebro del programador y el computador, y Python es un lenguaje de alto nivel que simplifica mucho la sintaxis usando un lenguaje más cercano al natural. Python ayuda en el proceso de aprendizaje por su claridad al escribir las estructuras algorítmicas, dispone de una gran cantidad de módulos que nos permiten realizar operaciones complicadas sin tener que empezar desde cero, y nos permite aprender a programar sin perdernos en la sintaxis del lenguaje. Además, soporta estructuras complejas de datos y programación orientada a objetos (esta última queda fuera del temario de la asignatura), por lo que todo lo aprendido es fácilmente aplicable a otros lenguajes como C++ y Java.

Algoritmos, programas y lenguajes

Durante el curso, utilizaremos un vocabulario específico que es posible que hayamos oído antes, pero que conviene tener claro desde el principio.

Se entiende por algoritmo la sucesión ordenada de acciones elementales que deben realizarse para obtener la solución correcta de un problema en un tiempo finito a partir de unos datos concretos. Por lo tanto, un algoritmo es un método general para la solución de un problema o la realización de una tarea. Quizá uno de los algoritmos más conocidos es el algoritmo de Euclides (para calcular el máximo común divisor de dos números), pero de la misma manera que los programas informáticos, podemos encontrar algoritmos en cualquier parte: en el teléfono que codifica los datos que enviamos a través de las redes móviles, el algoritmo de búsqueda de Google, el que encripta los datos de nuestros mensajes (WhatsApp, Telegram, Viber), o el que permite comprimir una canción en un fichero MP3 de sólo unos cuantos megabytes. Y en el fondo, una receta de cocina también es un algoritmo.

Codificar un algoritmo es escribirlo en un lenguaje que el computador pueda entender y ejecutar, es decir, realizar un programa. Por extensión, los ficheros que contienen las instrucciones que debe ejecutar el computador se llaman código o código fuente.

Un programa es una secuencia de instrucciones que especifican cómo realizar una operación determinada, ya sea matemática (encontrar las raíces de un polinomio) o de otro tipo (por ejemplo reemplazar texto en un documento o retocar una imagen para mejorar el contraste). Cada lenguaje de programación tiene sus peculiaridades, pero existe una serie de elementos que suele ser común a cualquier programa:

● Datos de entrada. Los datos con los que trabaja el programa, introducidos a través de teclado, leídos de un fichero, o de cualquier otro dispositivo.

9

● Datos de salida. Se muestran en pantalla, se guarda en un fichero o se envían a otro dispositivo. ● Operaciones. Sean matemáticas o de otro tipo, se realizan sobre los datos de entrada para obtener el resultado deseado. ● Condiciones. En ocasiones, hay que asegurarse de que se cumplen ciertas condiciones para ejecutar la secuencia de operaciones correcta. ● Repetición. Algunas de las operaciones puede que deban ejecutarse varias veces, habitualmente con alguna pequeña variación.

Cualquier programa que hayamos usado, sin importar lo complicado que sea, se basa en la combinación de estos elementos. Por lo tanto, podemos decir que programar es el proceso consistente en dividir una tarea grande y compleja en pequeños bloques suficientemente simples para poderlos realizar mediante la combinación de instrucciones como las de la lista.

Para escribir la secuencia de instrucciones de un programa se requiere de un lenguaje de programación. El lenguaje básico que entiende un computador (y más concretamente su unidad central de proceso o microprocesador, habitualmente llamada CPU por las siglas en inglés de central processing unit ) es el lenguaje máquina (también llamado lenguaje ensamblador). Se trata de un conjunto de instrucciones básicas que se traducen a código binario que puede ser directamente ejecutado por la CPU. Los lenguajes máquina o ensamblador se conocen también como lenguajes de bajo nivel (se encuentran al nivel de la CPU), en contraposición a los lenguajes de alto nivel que son más cercanos al usuario.

Los lenguajes de alto nivel tienen, como cualquier otro lenguaje, su vocabulario, sintaxis y semántica: ● El vocabulario está formado por todos los elementos propios del lenguaje, es decir, los símbolos de las operaciones aritméticas, lógicas, y relacionales, así como las palabras propias que permiten definir las estructuras algorítmicas. ● La sintaxis define la forma como se combinan estos elementos del lenguaje. Por ejemplo, x = 3 + 2 es una sintaxis correcta, pero x = 3 2 + no (aunque podría ser al revés). ● Y la semántica hace referencia a que las expresiones sintácticamente correctas tengan un resultado correcto. Por ejemplo x = 7/5 dará un resultado correcto, mientras que x = 7/’hola’ arrojará un error. Una semántica correcta también incluye que el programa no se quede colgado en un bucle infinito y que no de errores lógicos o de ejecución (por ejemplo al dividir un número por cero)

Una de las ventajas de los lenguajes de alto nivel es que sus programas pueden ejecutarse en máquinas diferentes normalmente sin modificaciones (o con muy pocas). Al ejecutar nuestro código ( run en inglés) se traducen las instrucciones que hemos programado a lenguaje máquina para que la CPU pueda interpretarlas y llevarlas a cabo. Esta traducción puede hacerse de dos formas: ● A través de un compilador , que lee el código fuente y lo traduce completamente al lenguaje de la máquina, creando un programa ejecutable (por ejemplo, un archivo .exe típico del sistema operativo Windows) que se puede usar tantas veces como se

10

En el sistema decimal la base es 10, y por lo tanto tenemos 10 símbolos para representar cualquier número: {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}.

Así, por ejemplo, el número 2016 tiene como dígito más significativo el 2, y el menos significativo el 6. Su descomposición en base 10 es la siguiente:

2016| 10 = 21000 + 0100 + 110 + 6

O lo que es lo mismo

2016| 10 = 210^3 + 010^2 + 110^1 + 610^0

De manera general, cualquier número N puede representarse mediante un polinomio de potencias de una base b cualquiera:

N|b = anbn^ + an-1bn-1^ + ... + a 1 *b^1 + a 0 *b^0

donde ak es un número perteneciente al conjunto [0, b-1].

De una manera análoga podemos entender como funciona el sistema de numeración binario, es decir, la codificación en base 2 usando únicamente 2 símbolos : {0, 1}. Por ejemplo, el número 100101 en base 2 equivale al 37 en base 10:

100101| 2 = 12^5 + 02^4 + 02^3 + 12^2 + 02^1 + 12^0 = 132 + 14 + 1*1 = 37| 10

Podemos hacer la conversión de base 10 a base 2 mediante divisiones sucesivas por 2 y anotando los restos (en orden inverso):

A la vista de esta representación, podemos también ser conscientes de las limitaciones de esta representación. De la misma manera que con 4 cifras decimales únicamente podemos representar 10^4 = 10000 números (del 0 al 9999), con 4 cifras binarias podemos representar solamente 2^4 = 16 números (del 0 al 15, es decir de 0 a 2^4 -1, o en binario, del 0000 al 1111). Es interesante entender esta representación binaria para entender algunas de las limitaciones que tienen los computadores y los lenguajes de programación a la hora de almacenar datos y realizar operaciones con ellos.

12

¿Cómo declaramos variables en Python?

En Python, las variables se definen de forma dinámica, lo que significa que no se tiene que especificar cuál es su tipo de antemano y puede tomar distintos valores en otro momento (por eso se llaman variables), incluso de un tipo diferente al que tenía previamente.

Cada variable tiene tres componentes: ● un identificador , es decir, el nombre que le queremos asignar al dato. ● un valor , el dato o datos que contiene ● y un tipo , que hace referencia al tipo de datos que contiene, es decir, si es un número entero, un carácter, o un valor lógico (verdadero o falso).

Una vez iniciado el intérprete y nos muestre el prompt , declarar una variable es muy sencillo. A continuación podemos ver un ejemplo en el que declaramos la variable con identificador edad y le asignamos el valor 18 mediante el operador de asignación =.

edad = 18 edad 18

Para verificar que la variable edad contiene el valor correcto podemos ejecutar directamente su identificador y el intérprete nos mostrará su valor. Para saber el tipo de datos de la variable edad podemos usar la función type():

type(edad) <class 'int'>

En este caso, el resultado de la función type() nos indica que edad es de tipo int, es decir, un número entero.

¿Qué ocurre realmente en Python al declarar una variable o asignarle

un valor?

Cuando hemos introducido la idea de variable hemos dicho que intuitivamente podemos pensar que una variable es un espacio en la memoria del computador en el que se almacena un dato (y que tiene asociado un identificador, un valor, y es de un determinado tipo). En algunos lenguajes esto es realmente lo que sucede (por ejemplo en C), y es una manera natural de entender cómo se crean y almacenan datos en la memoria.

Lo que sucede en Python es ligeramente diferente ya que las variables no son un lugar en la memoria del computador donde almacenamos un valor, sino que las variables se refieren, a un lugar de memoria que contiene ese valor. Al ejecutar una sentencia de asignación (por ejemplo edad = 99 ) se crea primero un objeto con el valor 99 de tipo int y se almacena en la memoria, y luego la variable se refiere a ese objeto.

13

mayoría de lenguajes, Python se distingue entre mayúsculas y minúsculas, y por ejemplo Edad y edad serían dos variables diferentes.

Todos los lenguajes de programación tienen una serie de palabras clave reservadas (keywords, en inglés) para operaciones e instrucciones que no pueden usarse como identificadores. En Python podemos conocer la lista de palabras reservadas usando la función de ayuda help():

if = 3 SyntaxError: invalid syntax help("keywords") Here is a list of the Python keywords. Enter any keyword to get more help. False def if raise None del import return True elif in try and else is while as except lambda with assert finally nonlocal yield break for not class from or continue global pass

De la misma manera, no debemos usar los nombres de funciones internas ( built-in functions ), ya que al identificar una variable con uno de esos nombres, la función correspondiente no podrá ser usada posteriormente:

print = 3 print("Hola mundo!") Traceback (most recent call last): File "<pyshell#16>", line 1, in print("Hola mundo!") TypeError: 'int' object is not callable

Tipos de datos

Ya sabemos que todas las variables tienen que ser de un tipo determinado. Los tipos de datos pueden ser simples o compuestos, y los más habituales en los principales lenguajes de programación son:

Simples Compuestos

Entero (int) Tabla (array, string) 2

Real (float) Estructura (record, struct) 2

Booleano (bool) Tupla, String (estáticos, inmutables) 3

Carácter (char) 1 Lista, Diccionario, Set (dinámicos, mutables) 3

15

(^1) El tipo de datos carácter no existe en Python (^2) Estructuras compuestas de lenguajes como C, Fortran o MATLAB (^3) Estructuras compuestas de Python

Python cuenta con otros tipos de datos que no veremos en esta asignatura, pero sí que debemos tener en cuenta si los tipos compuestos son: ● Mutables , cuando su contenido puede cambiarse en tiempo de ejecución. ● Inmutables , cuando su contenido no puede cambiarse en tiempo de ejecución.

Aunque la inmutabilidad parece ir en contra de la propia definición de variable, ya nos ocuparemos de esta particularidad más adelante.

Tipos de datos simples

Enteros (int)

En matemáticas, los números enteros son los naturales, sus negativos, y el cero. La mayoría de lenguajes de programación se refieren a este tipo numérico como integer o int. Python asigna este tipo automáticamente a los números literales que no tienen punto decimal o notación exponencial (como hemos visto en el ejemplo anterior con la variable edad).

También se puede usar la función int() para definir explícitamente una variable de este tipo:

temperatura = 25 type(temperatura) <class 'int'> type(37) <class 'int'> num_alumnos = int(56.5) num_alumnos 56 type(num_alumnos) <class 'int'> num_alumnos = int("56") num_alumnos 56 type(num_alumnos) <class 'int'>

Podemos ver como la función int() convierte un número real a entero o el texto "56" en el número entero también. Esta operación se suele denominar type casting , que en español podemos traducir por cambio de tipo, y hay otras funciones asociadas a otros tipos de datos que nos permiten cambiar entre diferentes tipos de datos.

En otros lenguajes de programación se utiliza un número determinado de bits (8, 16, 32 o

  1. para representar los enteros, y esto hace que el rango de números que se puede representar sea limitado, como hemos visto anteriormente. Sin embargo, en Python se utilizan tantos bits como sean necesarios. Podemos usar la función bin(), que convierte a

16

precisión de entre 15 y 17 decimales, y el rango que se puede representar és de ± 1,7 *

Veamos algunos ejemplos con números reales en Python, usando también la notación exponencial (a veces llamada también notación científica):

3.3e-

3.3e

type(3.3e2) <class 'float'> float(3)

0.3 + 0.3 + 0.

En el último ejemplo se puede observar el error de representación del tipo float en un cálculo sencillo.

Booleanos (bool)

Los booleanos constituyen el tipo de datos utilizado para representar valores lógicos (cierto o falso) en Python. Los valores lógicos se utilizan habitualmente para representar el resultado de una expresión de comparación, por ejemplo:

10 > 5 True 10 < 5 False res = 10 > 5 type(res) <class 'bool'>

Como podemos ver, una variable booleana solamente puede tomar los valores True y False para indicar un resultado cierto o falso respectivamente.

En lenguajes estrictos (como Pascal), no es posible realizar operaciones aritméticas con booleanos, únicamente se permiten operaciones lógicas. Python no es tan estricto y, dado que un booleano es simplemente una subclase de enteros, cualquier operación que trabaje con enteros también lo hará con booleanos:

True + 1 2 False - 1

True > False True int(True)

18

1

int(False) 0

Y cualquier número diferente de cero se convierte a cierto mediante la función bool():

bool(2) True bool(0) False bool(-5) True

Tipos de datos compuestos

Los tipos de datos compuestos o estructurados comprenden aquellos con elementos de valores de un mismo tipo o de diferentes tipos, que se representan unificados para ser guardados o procesados. Más adelante en el curso trabajaremos con tipos de datos que nos permitirán realizar operaciones con vectores y matrices de números, y conjuntos heterogéneos de números, texto y booleanos.

Por el momento, introduciremos el tipo de datos correspondiente a las cadenas de texto, que ya hemos visto en algún ejemplo, y que nos permitirá trabajar con secuencias de caracteres.

Cadena de caracteres o string (str)

El tipo de datos string es la estructura básica para trabajar con cadenas de texto, incluyendo todos los caracteres alfanuméricos y otros símbolos incluidos en la codificación ASCII o UTF-8. Python no tiene un tipo de datos simple correspondiente al carácter, por lo que un carácter es un string con un solo elemento.

Los string literales se pueden declarar entre comillas simples o dobles:

'Hola mundo!' 'Hola mundo!' "Hola mundo!" 'Hola mundo!'

Un string definido entre comillas simples puede contener comillas dobles y viceversa:

"That's a 'Hello World' text" "That's a 'Hello World' text" 'Eso era un mensaje de "Hola mundo"' bool(0) False >>> bool(-5) True #### Tipos de datos compuestos Los tipos de datos compuestos o estructurados comprenden aquellos con elementos de valores de un mismo tipo o de diferentes tipos, que se representan unificados para ser guardados o procesados. Más adelante en el curso trabajaremos con tipos de datos que nos permitirán realizar operaciones con vectores y matrices de números, y conjuntos heterogéneos de números, texto y booleanos. Por el momento, introduciremos el tipo de datos correspondiente a las cadenas de texto, que ya hemos visto en algún ejemplo, y que nos permitirá trabajar con secuencias de caracteres. ##### Cadena de caracteres o string (str) El tipo de datos string es la estructura básica para trabajar con cadenas de texto, incluyendo todos los caracteres alfanuméricos y otros símbolos incluidos en la codificación ASCII o UTF-8. Python no tiene un tipo de datos simple correspondiente al carácter, por lo que un carácter es un string con un solo elemento. Los string literales se pueden declarar entre comillas simples o dobles: >>> 'Hola mundo!' 'Hola mundo!' >>> "Hola mundo!" 'Hola mundo!' Un string definido entre comillas simples puede contener comillas dobles y viceversa: >>> "That's a 'Hello World' text" "That's a 'Hello World' text" >>> 'Eso era un mensaje de "Hola mundo"' 'Eso era un mensaje de "Hola mundo"'

También se puede definir un string con múltiples líneas usando una barra invertida al final de cada línea (o entre comillas triples). Este tipo de string es más habitual usarlo en ficheros de texto que contienen código y no tanto en la ventana de comandos:

19