Programación I: Python, Estructuras de Datos y Control

Aprende los fundamentos de Python para Programación I: tipos de datos, operadores, bucles, listas, diccionarios y funciones con ejemplos claros.

Programación I · Universidad de Barcelona · Grado en Ingeniería Informática · 1.º curso

21 páginas · 4 temas · 8 flashcards · 16 preguntas tipo test

Índice

  1. Fundamentos de computación, lenguajes y tipos de datos · p. 3-6
  2. Operadores, lógica proposicional y funciones · p. 6-9
  3. Estructuras de control condicionales e iterativas · p. 9-13
  4. Secuencias y colecciones: listas, tuplas, diccionarios y funciones de orden superior · p. 14-20

Fundamentos de computación, lenguajes y tipos de datos

Flashcards

¿Qué diferencia existe entre los tipos int y float en Python?
Los int representan números enteros sin coma decimal, mientras que los float almacenan valores continuos o reales con coma flotante.
¿Cuál es la función del operador len() sobre una cadena?
Calcula y entrega el número total de caracteres contenidos dentro del string.

Preguntas tipo test

  1. ¿Qué error puede manifestarse en un lenguaje interpretado?
    • a) Incompatibilidad de hardware estricto
    • b) Errores de compilación previa
    • c) Únicamente errores de ejecución
    • d) Fallo del circuito de traducción

    Respuesta: c) Únicamente errores de ejecución. Los intérpretes leen instrucción por instrucción directamente, por lo que solo manifiestan errores en tiempo de ejecución.

  2. ¿Qué resultado y tipo genera la operación 10 / 5?
    • a) 2 de tipo int
    • b) 2.0 de tipo float
    • c) 2.0 de tipo int
    • d) 10 de tipo complex

    Respuesta: b) 2.0 de tipo float. El operador aritmético de división produce en Python un número real (float), incluso si el cociente es exacto.

  3. En el corte de cadenas texto[inicio:fin:paso], ¿cómo opera el límite superior fin?
    • a) Se excluye del resultado final
    • b) Multiplica la longitud de cadena
    • c) Determina el tamaño del paso
    • d) Se incluye siempre en el corte

    Respuesta: a) Se excluye del resultado final. El índice final indicado dentro del rebanado delimita el corte sin ser incorporado en el texto devuelto.

Operadores, lógica proposicional y funciones

Flashcards

¿Qué diferencia existe entre el operador = y el operador ==?
El signo = realiza una asignación de valor a una variable, mientras que == evalúa la igualdad relacional entre dos términos.
¿Cómo modifica el operador not un valor booleano?
Invierte el valor de entrada: convierte True en False y False en True.

Preguntas tipo test

  1. ¿Qué condición hace que el operador lógico or produzca False?
    • a) Ambas proposiciones son verdaderas
    • b) El resultado se invierte con return
    • c) Una de las proposiciones es falsa
    • d) Ambas proposiciones son falsas

    Respuesta: d) Ambas proposiciones son falsas. El operador or solamente evalúa a False cuando la totalidad de sus términos evaluados son falsos.

  2. ¿Cómo se denominan las variables internas a una función?
    • a) De ámbito local
    • b) Parámetros invertidos
    • c) Variables relacionales
    • d) De ámbito global

    Respuesta: a) De ámbito local. Las asignaciones creadas en el cuerpo de una función están confinadas a su ámbito local.

  3. ¿Cuál es la palabra clave para formalizar la firma de una función?
    • a) function
    • b) return
    • c) def
    • d) call

    Respuesta: c) def. En Python la instrucción reservada def da inicio a la cabecera o firma de una nueva función.

Estructuras de control condicionales e iterativas

Flashcards

¿Por qué un bucle for resulta más seguro frente al riesgo de caer en bucles infinitos en comparación con while?
Porque for administra internamente la iteración sobre una estructura acotada sin depender de un incremento manual de variables.
¿Cómo se indica que un rango debe recorrer los números en sentido descendente?
Configurando el argumento del paso con un entero negativo, con un inicio mayor que el fin.

Preguntas tipo test

  1. ¿Qué componente de un bucle while previene su repetición indefinida?
    • a) La cabecera elif
    • b) El paso de avance
    • c) El rebanado local
    • d) El tipo de retorno

    Respuesta: b) El paso de avance. El paso altera el valor de las variables de control para que la condición del bucle eventualmente resulte falsa.

  2. ¿Qué número nunca estará incluido en range(1, 5)?
    • a) 4
    • b) 5
    • c) 1
    • d) 2

    Respuesta: b) 5. El valor_fin de la función range es estrictamente excluyente.

  3. Si se especifica un paso en range(), ¿qué regla es de cumplimiento obligatorio?
    • a) Omitir el valor_fin de parada
    • b) Indicar obligatoriamente el valor_inicial
    • c) Comenzar siempre en un número par
    • d) Hacer que el paso sea decimal

    Respuesta: b) Indicar obligatoriamente el valor_inicial. Para colocar el tercer argumento (paso) es indispensable haber explicitado el primer argumento (valor_inicial).

Secuencias y colecciones: listas, tuplas, diccionarios y funciones de orden superior

Flashcards

¿Cómo se agrega un elemento al final de una lista en memoria?
Se ejecuta el método append(valor) sobre la variable que almacena la lista.
¿Qué estructura devuelve el método items() de un objeto tipo dict?
Devuelve una serie de tuplas donde cada par contiene la clave en la primera posición y su valor en la segunda.

Preguntas tipo test

  1. ¿Cuál de estas estructuras de datos es inmutable?
    • a) Diccionario
    • b) Lista
    • c) Colección clave-valor
    • d) Tupla

    Respuesta: d) Tupla. Las tuplas no pueden ser modificadas, ampliadas ni reducidas tras su creación.

  2. ¿Qué acción desempeña la función filter(funcion, secuencia)?
    • a) Selecciona elementos donde la función retorna True
    • b) Elimina todas las claves de un diccionario
    • c) Ordena la secuencia en orden inverso
    • d) Transforma cada elemento multiplicando su valor

    Respuesta: a) Selecciona elementos donde la función retorna True. filter retiene únicamente los valores de la secuencia para los cuales la función booleana entrega True.

  3. ¿Qué método extrae y elimina un elemento por su clave en un diccionario?
    • a) insert(clave)
    • b) pop(clave)
    • c) remove(clave)
    • d) clear()

    Respuesta: b) pop(clave). El método pop(clave) retira el par clave-valor del diccionario y devuelve el contenido almacenado.

Y 0 flashcards y 4 preguntas más en el documento.

Texto del documento

APUNTES PROGRAMACIÓN I Grado en Ingeniería Informática Universidad de Barcelona AprenAI 2026-2027 Aprende los fundamentos de Python para Programación I: tipos de datos, operadores, bucles, listas, diccionarios y funciones con ejemplos claros.

APREN.AI Índice 1 Fundamentos de computación, lenguajes y tipos de datos Arquitectura básica y resolución de problemas La estructura de un programa y los lenguajes de programación Tipos de datos y operaciones con cadenas 2 Operadores, lógica proposicional y funciones Operadores del lenguaje y construcción de expresiones Tablas de verdad Modularización: definición e invocación de funciones 3 Estructuras de control condicionales e iterativas Estructuras condicionales: toma de decisiones Estructuras iterativas: el bucle while El bucle for y el generador range 4 Secuencias y colecciones: listas, tuplas, diccionarios y funciones de orden superior Definición de secuencias: tuplas y listas Métodos operativos, búsqueda y ordenamiento de listas Procesamiento funcional: map y filter Estructuras asociativas: diccionarios 5 Formulario Sintaxis fundamental y tipos de datos Estructuras de control y flujo iterativo Métodos de listas, diccionarios y orden superior Errores típicos de sintaxis y lógica Soluciones de las preguntas de repaso Estos apuntes pueden contener errores u omisiones.

Son un material de apoyo y no sustituyen al temario oficial ni al profesorado: contrasta la información importante. Programación I: Python, Estructuras de Datos y Control 1 1 Fundamentos de computación, lenguajes y tipos de datos AL ACABAR SABRÁS Definir los componentes fundamentales de un programa computacional. Diferenciar la ejecución en lenguajes compilados frente a lenguajes interpretados. Aplicar operadores de rebanado y longitud en cadenas de texto. PIÉNSALO ANTES DE LEER 1 ¿Por qué el resultado de dividir 10 entre 5 en Python no se clasifica como un número entero común?

Arquitectura básica y resolución de problemas Una computadora es un dispositivo físico diseñado para procesar datos con propósito general. Su objetivo principal consiste en transformar entradas de datos en nueva información o resultados aprovechables. El funcionamiento informático se divide en dos áreas complementarias: el Hardware, que abarca toda la estructura física, y el Software, compuesto por herramientas abstractas y programas. El software indica qué hacer y el hardware lo ejecuta mecánicamente. En informática, un problema es la necesidad de pasar del estado inicial A al estado final B cuando se desconoce el camino.

Los programas computacionales proporcionan la secuencia precisa para alcanzar dicha solución. La estructura de un programa y los lenguajes de programación La formulación fundamental de la programación establece la relación: Un programa ( ) es la combinación articulada de un algoritmo ( ) y los datos ( ). Un algoritmo consiste en una sucesión finita, precisa y ordenada de pasos para cumplir una meta determinada, de manera similar a una receta instructiva. Por su parte, un dato constituye una representación simbólica (numérica o alfabética) preparada para ser procesada y exhibida al usuario.

Para que la máquina ejecute las instrucciones, el algoritmo debe redactarse en un lenguaje de programación, el cual actúa como un protocolo estricto de comunicación provisto de reglas formales. Dado que las computadoras operan con total literalidad, existen dos mecanismos de traducción: Lenguajes compiladores: revisan el programa por completo de inicio a fin y generan un archivo ejecutable independiente. En este esquema pueden presentarse tanto errores de compilación como de ejecución. Lenguajes intérpretes: ejecutan y procesan el código instrucción por instrucción en tiempo real. En estos entornos únicamente se manifiestan errores de ejecución.

P = A + D P A D Programación I: Python, Estructuras de Datos y Control 2 DEFINICIÓN Una variable es un espacio de almacenamiento simbólico (análogo a una caja etiquetada) que retiene un valor en memoria para su utilización y modificación posterior. COMPRUEBA 2 ¿Por qué un lenguaje puramente interpretado no produce errores de compilación previos a la ejecución? Tipos de datos y operaciones con cadenas Python clasifica la información en distintos tipos elementales para su correcto tratamiento computacional: Tipo Nombre técnico Ejemplos representativos Descripción Entero int 9, -5, 37, 0 Números exactos sin parte fraccionaria.

Real float 0.01, 88.72156333, -12.0, 0.0 Cantidades con punto flotante o decimales. Complejo complex 10 + 9j La letra j determina el componente imaginario. Texto str "Ana y sus hermanas", "u" Secuencias ordenadas de caracteres entre comillas. Lógico bool True, False Valores booleanos de verdad o falsedad. Al procesar operaciones aritméticas entre números de tipo int , la suma, la resta y la multiplicación dan siempre como resultado otro int . Por el contrario, la división ordinaria con el operador / produce un valor de tipo float (por ejemplo, 10 / 5 arroja 2.0 de tipo float). ERROR FRECUENTE Suponer que dividir dos números enteros exactos resulta en un entero.

En Python, el operador / siempre devuelve un dato decimal ( float ). Las cadenas de caracteres o strings ( str ) admiten diversas manipulaciones internas: Medición de longitud: mediante la instrucción len(texto) se obtiene la cantidad total de caracteres. 1 Concatenación: a través del operador de adición ( + ) se unen dos o más textos. 2 Rebanado (slicing o subcadenas): con la sintaxis [inicio:fin:paso] se extraen fragmentos específicos. El índice final nunca queda incluido en el recorte resultante.

3 Programación I: Python, Estructuras de Datos y Control 3 EJEMPLO Si la variable nombre almacena "Franco", la sentencia nombre[0:4] extrae "Fran", nombre[2:7] obtiene "anco", y aplicando un paso con nombre[2:7:2] produce "ac". COMPRUEBA 3 ¿Qué valor y tipo arroja la expresión 8 / 4 en Python? ESQUEMA Clasificación de tipos de datos elementales IDEAS CLAVE Un programa informático es la suma estructurada de un algoritmo más datos. Los compiladores traducen el archivo completo de antemano; los intérpretes leen y ejecutan instrucción a instrucción. La división con el operador devuelve siempre un valor de tipo float.

El rebanado de texto sigue la regla [inicio:fin:paso], excluyendo siempre el índice final. COMPRUEBA LO QUE HAS APRENDIDO 4. ¿Qué diferencia existe entre los tipos int y float en Python? 5. ¿Cuál es la función del operador len() sobre una cadena? Numéricos Valores con operaciones matemáticas int Enteros positivos y negativos float Valores reales con coma decimal complex Parte real e imaginaria con j Texto y lógica Caracteres y álgebra booleana str Cadena de caracteres bool Valores True y False / Programación I: Python, Estructuras de Datos y Control 4 Test Rodea la respuesta correcta. Las soluciones están al final. 6. ¿Qué error puede manifestarse en un lenguaje interpretado? 7.

¿Qué resultado y tipo genera la operación 10 / 5? 8. En el corte de cadenas texto[inicio:fin:paso], ¿cómo opera el límite superior fin? 9. ¿Qué componente define a la parte imaginaria de un número complex en Python? 2 Operadores, lógica proposicional y funciones AL ACABAR SABRÁS Construir expresiones booleanas complejas mediante operadores relacionales y lógicos. Definir funciones con parámetros y transferir datos mediante la instrucción return. Diferenciar el ámbito local del ámbito global de las variables. PIÉNSALO ANTES DE LEER 10 ¿Por qué una variable calculada dentro de una función deja de existir en el programa principal?

Operadores del lenguaje y construcción de expresiones Los programas procesan cálculos y toman decisiones mediante operadores clasificados en tres ramas esenciales: Aritméticos: efectúan operaciones de cálculo numérico (adición, sustracción, producto, división) y generan salidas numéricas. Relacionales: efectúan comparaciones entre datos y devuelven un valor booleano ( True o False ). Comprenden la igualdad ( == ), desigualdad ( != ), menor ( < ), mayor ( > ), menor o igual ( <= ) y mayor o igual ( >= ).

Incompatibilidad de hardware estricto a) Errores de compilación previa b) Únicamente errores de ejecución c) Fallo del circuito de traducción d) 2 de tipo int a) 2.0 de tipo float b) 2.0 de tipo int c) 10 de tipo complex d) Se excluye del resultado final a) Multiplica la longitud de cadena b) Determina el tamaño del paso c) Se incluye siempre en el corte d) El carácter i a) El operador % b) La letra c c) El sufijo j d) Programación I: Python, Estructuras de Datos y Control 5 Lógicos: combinan o transforman condiciones mediante los términos and , or y not , produciendo resultados booleanos.

Una expresión lógica surge al vincular múltiples comparaciones relacionales a través de conectores lógicos. Tablas de verdad El comportamiento de los operadores lógicos determina el flujo deductivo del código: Operador Regla fundamental Caso verdadero Caso falso and Verdadera únicamente si todas las condiciones son ciertas. V and V = V Cualquier componente en F resulta en F. or Verdadera con que al menos una condición sea cierta. Al menos un elemento en V resulta en V. F or F = F not Invierte de forma unaria el valor de verdad. not F = V not V = F COMPRUEBA 11 ¿Cuál es el valor final de la expresión (5 > 3) and (2 == 4)?

Modularización: definición e invocación de funciones Las funciones son bloques de código reutilizables orientados a solucionar tareas específicas. Estructurar el programa en funciones simplifica la lectura y mantenimiento del código. Para establecer una función, se escribe su firma formal con la palabra reservada def : Dentro de los paréntesis se declaran los parámetros, que corresponden a los datos de entrada que la función requiere para trabajar. Un programa invoca una función sin límite de llamadas a lo largo del código. Las funciones gestionan dos alcances de memoria diferenciados: Ámbito local: espacio interno donde habitan las variables y asignaciones creadas en la propia función.

No son accesibles desde fuera. Ámbito global: espacio del programa general externo a la función. Para retornar datos calculados hacia el exterior se emplea la instrucción return , lo que permite guardar el producto obtenido en una variable receptora. def nombre(par metros) : a ˊ Programación I: Python, Estructuras de Datos y Control 6 EJEMPLO def suma(numero_1, numero_2): resultado = numero_1 + numero_2 return resultado resultado_suma = suma(5, 9) print(resultado_suma) ERROR FRECUENTE Intentar imprimir o utilizar en el ámbito global una variable declarada dentro de una función sin haberla retornado con return .

COMPRUEBA 12 ¿Qué ocurre si una función no utiliza return para entregar sus cálculos? PROCESO Ciclo de vida de una llamada a función 1 Invocación Se llama a la función pasando argumentos 2 Cálculo lo cal Se ejecutan senten cias en el ámbito local 3 Sentencia return Se entrega el valor calculado al exterior 4 Asigna ción El programa principal captura la respuesta IDEAS CLAVE Los operadores relacionales comparan operandos produciendo siempre valores de verdad. El conector lógico and solo evalúa a True si todos sus componentes son verdaderos. Las variables declaradas dentro de una función residen exclusivamente en su ámbito local.

La instrucción return traslada los resultados generados dentro de la función al contexto que la invocó. COMPRUEBA LO QUE HAS APRENDIDO 13. ¿Qué diferencia existe entre el operador = y el operador ==? 14. ¿Cómo modifica el operador not un valor booleano? Programación I: Python, Estructuras de Datos y Control 7 Test Rodea la respuesta correcta. Las soluciones están al final. 15. ¿Qué condición hace que el operador lógico or produzca False? 16. ¿Cómo se denominan las variables internas a una función? 17. ¿Cuál es la palabra clave para formalizar la firma de una función? 18. ¿Qué operador evalúa la desigualdad estricta entre dos valores?

3 Estructuras de control condicionales e iterativas AL ACABAR SABRÁS Diseñar ramas de decisión utilizando las cláusulas if, elif y else. Implementar bucles while asegurando la inicialización del estado y la actualización del paso. Generar secuencias numéricas iterables controladas mediante range(). PIÉNSALO ANTES DE LEER 19 ¿Qué diferencia existe entre evaluar dos cláusulas if sucesivas frente a una estructura if-elif? Estructuras condicionales: toma de decisiones Las estructuras de control regulan el flujo de ejecución del código. La principal herramienta condicional es la bifurcación if , que evalúa el valor de verdad de una condición lógica.

Si es verdadera, procesa un bloque de sentencias; si es falsa, continúa por otra rama sin ejecutar las instrucciones del camino afirmativo. Ambas proposiciones son verdaderas a) El resultado se invierte con return b) Una de las proposiciones es falsa c) Ambas proposiciones son falsas d) De ámbito local a) Parámetros invertidos b) Variables relacionales c) De ámbito global d) function a) return b) def c) call d) != a) not b) == c) <= d) Programación I: Python, Estructuras de Datos y Control 8 Diagrama de flujo de una bifurcación condicional if.

La sintaxis completa admite múltiples ramificaciones jerárquicas: if condicion_1: instruccion_1 elif condicion_2: instruccion_A else: instruccion_x La cláusula elif representa la unión de else + if: toma el camino alternativo únicamente cuando las condiciones previas resultaron falsas, verificando inmediatamente una condición nueva. COMPRUEBA 20 ¿En qué orden se examinan las cláusulas de un bloque if-elif-else? Estructuras iterativas: el bucle while Las instrucciones repetitivas o bucles permiten ejecutar un grupo de órdenes múltiples veces. La sentencia while repite su contenido mientras la condición permanezca en estado verdadero.

Programación I: Python, Estructuras de Datos y Control 9 Diagrama de flujo del ciclo iterativo de un bucle while. Un bucle while consta obligatoriamente de cuatro elementos esenciales: ERROR FRECUENTE Olvidar actualizar la variable de paso dentro del cuerpo del while , provocando un bucle infinito que nunca alcanza la condición de cierre. El bucle for y el generador range A diferencia de while , la estructura for automatiza el control de repeticiones sin necesidad de declarar ni modificar manualmente el estado previo y el paso: for var in iterable: instrucciones Estado: valores asignados a las variables de control antes del ingreso al bucle.

1 Condición o invariante: expresión booleana evaluada antes de cada ciclo que autoriza el acceso o decreta la salida definitiva. 2 Cuerpo: conjunto de sentencias que se reiteran sucesivamente mientras la condición se satisfaga. 3 Paso: modificación obligatoria del valor de las variables involucradas en la condición para avanzar hacia el fin del ciclo. 4 Programación I: Python, Estructuras de Datos y Control 10 Un iterable es cualquier estructura secuencial capaz de ser recorrida elemento por elemento. Una de las herramientas más comunes para este fin es el constructor numérico range(valor_inicial, valor_fin, paso) .

El constructor de rangos opera bajo reglas estrictas: El paso debe ser forzosamente un número entero. El valor_inicial queda comprendido en el recorrido, mientras que el valor_fin se omite siempre. Si se prescinde de valor_inicial , se asume 0 por defecto. Si no se define paso , este adquiere automáticamente el valor 1. Para confeccionar un conteo decreciente se debe asignar obligatoriamente un paso negativo. Si se define un paso explícito, es obligatorio escribir el valor_inicial, incluso cuando este coincida con 0. COMPRUEBA 21 ¿Qué números genera la expresión range(0, 6, 2)?

PROCESO Evaluación encadenada de sentencias if-elif-else 1 Evaluar condición 1 Comprueba la pri mera prueba del if 2 Bifurca ción elif Si falló la anterior, re visa condición 2 3 Rama else Ruta por defecto si ninguna fue cierta 4 Continua ción El programa retoma el flujo común IDEAS CLAVE La instrucción if evalúa condiciones booleanas para bifurcar el camino del flujo de ejecución. La cláusula elif enlaza una nueva evaluación lógica si las condiciones anteriores resultaron falsas. Un bucle while requiere estado inicial, condición lógica, cuerpo de sentencias y paso modificador. La función range() omite siempre el valor de fin y requiere fijar el inicio si se especifica un paso.

COMPRUEBA LO QUE HAS APRENDIDO 22. ¿Por qué un bucle for resulta más seguro frente al riesgo de caer en bucles infinitos en comparación con while? 23. ¿Cómo se indica que un rango debe recorrer los números en sentido descendente? Programación I: Python, Estructuras de Datos y Control 11 Test Rodea la respuesta correcta. Las soluciones están al final. 24. ¿Qué componente de un bucle while previene su repetición indefinida? 25. ¿Qué número nunca estará incluido en range(1, 5)? 26. Si se especifica un paso en range(), ¿qué regla es de cumplimiento obligatorio? 27. ¿Qué ocurre si una condición de un bloque if resulta verdadera?

4 Secuencias y colecciones: listas, tuplas, diccionarios y funciones de orden superior AL ACABAR SABRÁS Distinguir secuencias mutables de inmutables y acceder a sus elementos mediante indexación. Manipular listas utilizando métodos de inserción, ordenamiento y supresión. Gestionar información en diccionarios mediante sus métodos de consulta y actualización. Transformar secuencias empleando funciones de orden superior como map y filter. PIÉNSALO ANTES DE LEER 28 ¿Por qué no es posible añadir un elemento a una tupla existente mediante una función como append?

La cabecera elif a) El paso de avance b) El rebanado local c) El tipo de retorno d) 4 a) 5 b) 1 c) 2 d) Omitir el valor_fin de parada a) Indicar obligatoriamente el valor_inicial b) Comenzar siempre en un número par c) Hacer que el paso sea decimal d) Convierte los datos a float a) Evalúa forzosamente el bloque else b) Genera un bucle iterativo continuo c) Ejecuta su bloque y salta las demás ramas d) Programación I: Python, Estructuras de Datos y Control 12 Definición de secuencias: tuplas y listas Una secuencia reúne una serie ordenada de elementos vinculados entre sí.

En Python, las secuencias constituyen grupos organizados de datos alojados de manera contigua en la memoria física del equipo. Tipo Sintaxis Mutabilidad Naturaleza de datos String (str) Comillas "" Inmutable (no editable) Secuencia exclusiva de caracteres contiguos. Tupla (tuple) Paréntesis ( ) Inmutable (no editable) Colección de cualquier tipo de dato, separada por comas. Lista (list) Corchetes [ ] Mutable (editable) Colección modificable de cualquier tipo de dato. Rango (range) range() Inmutable Secuencia generada de números enteros.

Tanto en tuplas como en listas el acceso posicional a los elementos se realiza mediante índices numéricos encerrados en corchetes, comenzando por el índice cero: tupla[0] o lista[3] . Si la estructura anida otras colecciones, es posible encadenar índices para alcanzar subelementos: lista[3][1] . Asimismo, las tuplas admiten el desempaquetado de sus componentes en variables independientes, como al asignar fecha = (12, "junio", 1970) mediante la instrucción dia, mes, anio = fecha . COMPRUEBA 29 ¿Cuál es la diferencia fundamental entre una tupla y una lista?

Métodos operativos, búsqueda y ordenamiento de listas Al ser mutables, las listas ofrecen un amplio catálogo de métodos para transformar su contenido en memoria: Método Acción que realiza Ejemplo de aplicación append(valor) Incorpora el elemento indicado al final de la lista. miLista.append(5) insert(posic, valor) Inserta el valor en el índice numérico señalado. miLista.insert(2, 10) remove(valor) Suprime de la lista la primera aparición del valor. miLista.remove(7) sort() Ordena la lista modificando directamente la estructura original. miLista.sort() sorted() Devuelve una nueva lista ordenada sin alterar la original.

nueva = sorted(miLista) Programación I: Python, Estructuras de Datos y Control 13 Método Acción que realiza Ejemplo de aplicación clear() Vacía todos los elementos (también se logra asignando [] ). miLista.clear() copy() Genera una copia superficial de la lista. copia = miLista.copy() sum() Calcula y devuelve la suma aritmética de los elementos. total = sum(miLista) Para comprobar la presencia de un elemento dentro de una colección se utiliza el operador in (por ejemplo, 34 in miLista ), el cual devuelve True o False . Si se desea conocer la ubicación exacta, el método index() entrega la posición del dato. El proceso de ordenamiento reorganiza las ubicaciones relativas en una colección.

El método sort() admite parámetros complementarios: el argumento key permite ordenar en función de un criterio específico, mientras que activar reverse=True invierte el sentido de ordenación. ERROR FRECUENTE Confundir sort() con sorted() . El método sort() modifica la lista en su lugar y no devuelve una lista nueva, mientras que la función sorted() preserva intacta la original y genera una nueva secuencia ordenada. Procesamiento funcional: map y filter Python proporciona funciones de orden superior para transformar y cribar secuencias de manera concisa: map(función, secuencia): aplica la función indicada a cada elemento individual y produce una secuencia con los resultados.

Para materializar la estructura resultante se la convierte con list() . filter(función, secuencia): evalúa cada elemento mediante una función que retorna un valor booleano, conservando únicamente aquellos cuyo resultado fue True . Requiere igualmente la conversión con list() . COMPRUEBA 30 ¿Qué resultado entrega filter si la función evaluadora devuelve False para un elemento determinado? Estructuras asociativas: diccionarios Un diccionario (tipo dict ) es una estructura mutable que vincula parejas compuestas por una clave y un valor (representadas como clave:valor ).

Para añadir o alterar un registro basta con asignar directamente el valor sobre la clave deseada, sin necesidad de insertar desplazando elementos posicionales. Los métodos cardinales para la manipulación de diccionarios comprenden: Programación I: Python, Estructuras de Datos y Control 14 clear() : vacía todos los registros del diccionario. pop(clave) : elimina el par asociado a dicha clave y devuelve su valor; si no existe, genera error. popitem() : remueve y devuelve un par clave-valor; si el diccionario está vacío, produce error. copy() : duplica el diccionario en otra región de memoria. fromkeys(secuencia) : edifica un diccionario empleando los elementos de la secuencia como claves.

get(clave) : obtiene y devuelve el valor asociado a la clave sin lanzar excepción si falta. items() : entrega una lista compuesta por tuplas donde la posición 0 es la clave y la posición 1 el valor. keys() : genera una lista contentiva de las claves. update(otro_dict) : traslada las duplas del segundo diccionario al actual, actualizando valores si las claves ya existían. COMPRUEBA 31 ¿Qué formato poseen los elementos entregados por el método items() de un diccionario?

ESQUEMA Estructuras de datos por mutabilidad Colecciones Agrupaciones de información en memoria Inmutables No permiten alteraciones tras su creación str Secuencia contigua de caracteres tuple Datos ordenados entre paréntesis Mutables Permiten inserción, edición y borrado list Secuencia ordenada entre corchetes dict Asociación clave:valor Programación I: Python, Estructuras de Datos y Control 15 IDEAS CLAVE Las tuplas y strings son inmutables, en tanto que las listas y los diccionarios son mutables. El método sort() muta la lista original, mientras que la función sorted() preserva los datos originales.

map aplica una transformación a cada dato, y filter retiene los elementos que satisfacen una función booleana. Los diccionarios indexan datos asociando pares de clave y valor mediante llaves. COMPRUEBA LO QUE HAS APRENDIDO 32. ¿Cómo se agrega un elemento al final de una lista en memoria? 33. ¿Qué estructura devuelve el método items() de un objeto tipo dict? Test Rodea la respuesta correcta. Las soluciones están al final. 34. ¿Cuál de estas estructuras de datos es inmutable? 35. ¿Qué acción desempeña la función filter(funcion, secuencia)? 36. ¿Qué método extrae y elimina un elemento por su clave en un diccionario? 37. ¿Qué operador constata si un determinado valor reside en una lista?

Diccionario a) Lista b) Colección clave-valor c) Tupla d) Selecciona elementos donde la función retorna True a) Elimina todas las claves de un diccionario b) Ordena la secuencia en orden inverso c) Transforma cada elemento multiplicando su valor d) insert(clave) a) pop(clave) b) remove(clave) c) clear() d) index a) == b) in c) get d) Programación I: Python, Estructuras de Datos y Control 16 5 Formulario Sintaxis fundamental y tipos de datos Fórmula o procedimiento Qué significa cada símbolo Cuándo se usa P: programa, A: algoritmo (pasos finitos), D: datos (representación simbólica). Estructuración conceptual de un programa informático.

texto[inicio:fin:paso] inicio: índice inicial (incluido), fin: límite superior (excluido), paso: incremento entero. Rebanado o corte posicional de subcadenas o secuencias. Definición e invocación de funciones def nombre(parámetros): bloque local return valor en ámbito global: var = nombre(argumentos) . Procedimiento para modularizar tareas y retornar resultados fuera del ámbito local. Estructuras de control y flujo iterativo Fórmula o procedimiento Qué significa cada símbolo Cuándo se usa if c1: ... elif c2: ... else: c1, c2: expresiones relacionales o lógicas evaluadas secuencialmente; else: alternativa final por descarte. Bifurcación condicional del flujo de ejecución del programa.

Procedimiento de bucle while Asignar estado previo de control Evaluar condición o invariante Ejecutar cuerpo repetitivo Actualizar paso modificador. Repetición de sentencias mientras la condición lógica permanezca en True. range(inicio, fin, paso) inicio: entero de partida (incluido, def. 0), fin: entero de parada (excluido), paso: incremento o decremento (def. 1). Generación de secuencias numéricas iterables controladas dentro de bucles for . Métodos de listas, diccionarios y orden superior Fórmula o procedimiento Qué significa cada símbolo Cuándo se usa lista.append(x) / lista.insert(i, x) x: elemento a ingresar, i: posición numérica del índice.

Inserción de elementos al final o en un índice concreto de una lista mutable. lista.sort(key=k, reverse=b) k: función o criterio de orden, b: booleano para orden descendente (True). Reorganización en memoria (in- place) de los elementos de una lista. P = A + D Programación I: Python, Estructuras de Datos y Control 17 Fórmula o procedimiento Qué significa cada símbolo Cuándo se usa sorted(secuencia) secuencia: iterable a ordenar sin alterar el original. Generar una nueva lista ordenada preservando intacta la fuente. map(f, seq) / filter(f_bool, seq) f: función de transformación, f_bool: función booleana evaluadora, seq: iterable.

Transformación o cribado funcional de secuencias (requiere conversión explícita con list() ). d.pop(k) / d.get(k) / d.items() k: clave del registro en el diccionario d; items() entrega tuplas (clave, valor) . Consulta, extracción segura e iteración asociativa sobre tipos dict . Errores típicos de sintaxis y lógica Concepto o caso Comportamiento y causa Corrección reglamentaria División con / Dividir números de tipo int entrega siempre un tipo float (ej. 10 / 5 produce 2.0 ). Tener en cuenta el cambio de tipo de dato a real en comprobaciones o salidas. Límite superior en range y rebanado El valor final señalado nunca se procesa ni forma parte de la secuencia resultante.

Definir fin + 1 si se precisa alcanzar un índice o número determinado. Bucle infinito en while Omitir la sentencia de paso dentro del cuerpo impide que la condición de parada se evalúe a False. Garantizar la actualización explícita de la variable de control en cada ciclo. Inmutabilidad de tuplas y cadenas Intentar alterar elementos mediante subíndices (ej. tupla[0] = 5 ) provoca un fallo de ejecución. Utilizar listas si se requieren estructuras editables en memoria. Programación I: Python, Estructuras de Datos y Control 18 Soluciones de las preguntas de repaso 1. Porque el operador de división convencional en Python está diseñado para retornar siempre un número con punto decimal (float). 2.

Porque no examina de forma íntegra el código antes de correrlo, sino que traduce y ejecuta secuencialmente línea por línea en tiempo real. 3. Produce el valor 2.0 y pertenece a la clase float. 4. Los int representan números enteros sin coma decimal, mientras que los float almacenan valores continuos o reales con coma flotante. 5. Calcula y entrega el número total de caracteres contenidos dentro del string. 6. c) Únicamente errores de ejecución. Los intérpretes leen instrucción por instrucción directamente, por lo que solo manifiestan errores en tiempo de ejecución. 7. b) 2.0 de tipo float.

El operador aritmético de división produce en Python un número real (float), incluso si el cociente es exacto. 8. a) Se excluye del resultado final. El índice final indicado dentro del rebanado delimita el corte sin ser incorporado en el texto devuelto. 9. d) El sufijo j. Python designa la componente imaginaria de los números complejos mediante la letra j. 10. Porque pertenece exclusivamente al ámbito local de dicha función y desaparece al completarse la llamada. 11. Es False, debido a que el operador and exige la veracidad simultánea de ambas proposiciones. 12. Los valores computados en su ámbito local se descartan al finalizar y el exterior no recibe el resultado para almacenarlo. 13.

El signo = realiza una asignación de valor a una variable, mientras que == evalúa la igualdad relacional entre dos términos. 14. Invierte el valor de entrada: convierte True en False y False en True. 15. d) Ambas proposiciones son falsas. El operador or solamente evalúa a False cuando la totalidad de sus términos evaluados son falsos. 16. a) De ámbito local. Las asignaciones creadas en el cuerpo de una función están confinadas a su ámbito local. 17. c) def. En Python la instrucción reservada def da inicio a la cabecera o firma de una nueva función. 18. a) !=. El símbolo != es el operador relacional de desigualdad estricta. 19.

Dos if independientes se evalúan siempre ambos; con if-elif, la segunda prueba solo se evalúa si la primera resultó falsa. 20. De manera descendente; en cuanto una condición resulta verdadera, su bloque corre y se omiten todas las ramas restantes. 21. Genera la secuencia 0, 2 y 4; el número 6 queda excluido por ser el límite final. 22. Porque for administra internamente la iteración sobre una estructura acotada sin depender de un incremento manual de variables. 23. Configurando el argumento del paso con un entero negativo, con un inicio mayor que el fin. Programación I: Python, Estructuras de Datos y Control 19 24. b) El paso de avance.

El paso altera el valor de las variables de control para que la condición del bucle eventualmente resulte falsa. 25. b) 5. El valor_fin de la función range es estrictamente excluyente. 26. b) Indicar obligatoriamente el valor_inicial. Para colocar el tercer argumento (paso) es indispensable haber explicitado el primer argumento (valor_inicial). 27. d) Ejecuta su bloque y salta las demás ramas. Al cumplirse la condición, se procesa su bloque interno y se omiten los elif o else subordinados. 28. Porque las tuplas son estructuras inmutables y su contenido no puede alterarse en memoria una vez definidas. 29.

La lista es mutable y permite alterar, añadir o borrar elementos; la tupla es inmutable y no puede modificarse tras su creación. 30. Dicho elemento queda excluido de la secuencia resultante entregada por el filtro. 31. Se entregan como una colección de tuplas de dos elementos, conteniendo la clave en el índice 0 y el valor asociado en el índice 1. 32. Se ejecuta el método append(valor) sobre la variable que almacena la lista. 33. Devuelve una serie de tuplas donde cada par contiene la clave en la primera posición y su valor en la segunda. 34. d) Tupla. Las tuplas no pueden ser modificadas, ampliadas ni reducidas tras su creación. 35. a) Selecciona elementos donde la función retorna True.

filter retiene únicamente los valores de la secuencia para los cuales la función booleana entrega True. 36. b) pop(clave). El método pop(clave) retira el par clave-valor del diccionario y devuelve el contenido almacenado. 37. c) in. La palabra clave in evalúa la pertenencia de un elemento en una colección entregando True o False. Programación I: Python, Estructuras de Datos y Control 20

Más apuntes de Programación I

Exámenes, temas y apuntes de Programación I