0% encontró este documento útil (0 votos)
1 vistas32 páginas

Manual Python FTPROGRAM

Manual con las funciónes prinicpales de python para principiantes

Cargado por

Oscar Hernández
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
1 vistas32 páginas

Manual Python FTPROGRAM

Manual con las funciónes prinicpales de python para principiantes

Cargado por

Oscar Hernández
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

MANUAL DE APRENDIZAJE DE

PYTHON
Fundamentos, Estructuras de Control y NumPy
Basado en los programas: Actividades 1 al 8

Nivel: Principiante a Intermedio-Avanzado


Curso: FTPROGRAM-IDMA04-11179
INTRODUCCIÓN
Este manual ha sido generado a partir del análisis exhaustivo de nueve archivos Python
correspondientes a las actividades del curso FTPROGRAM-IDMA04-11179. El objetivo es
proporcionar una referencia didáctica, técnica y progresiva que permita a cualquier persona
comprender a profundidad cada concepto, función, estructura y biblioteca utilizada en los
programas.

Los temas cubiertos van desde los fundamentos absolutos del lenguaje Python (variables, tipos
de datos, operadores, entrada/salida) hasta el uso de la biblioteca NumPy para el cálculo
matricial y vectorial aplicado a contextos de ingeniería aeronáutica.

NOTA IMPORTANTE: Este manual asume que el lector no tiene ningún conocimiento previo de
programación, pero tiene la ambición de alcanzar un nivel profesional. Cada sección explica el QUÉ,
el CÓMO, el CUÁNDO, el POR QUÉ y lo que sucede internamente.

Estructura del Manual


• Capítulo 1 – Conceptos Básicos: Variables, tipos de datos, operadores, entrada/salida,
comentarios
• Capítulo 2 – Estructuras Condicionales: if, elif, else, operadores lógicos
• Capítulo 3 – Ciclos: for, while, break, continue
• Capítulo 4 – Manejo de Excepciones: try, except, ValueError
• Capítulo 5 – Listas y Comprensiones de Lista
• Capítulo 6 – Funciones Integradas: print, input, int, float, len, range
• Capítulo 7 – Biblioteca NumPy: arrays, matrices, operaciones estadísticas, álgebra
lineal
• Capítulo 8 – Ejemplos Extraídos de los Códigos
• Capítulo 9 – Ejercicios de Práctica
• Capítulo 10 – Preguntas de Autoevaluación
• Capítulo 11 – Glosario Técnico
• Capítulo 12 – Buenas Prácticas
CAPÍTULO 1: CONCEPTOS BÁSICOS

1.1 Comentarios en Python


Definición
Un comentario es una línea (o bloque) de texto que Python ignora completamente durante la
ejecución. Existe exclusivamente para el programador y para quienes lean el código.
Propósito
Documentar el código, explicar decisiones de diseño, desactivar temporalmente líneas y hacer
el código mantenible a largo plazo.
Sintaxis
# Esto es un comentario de una línea
"""
Esto es un comentario
de múltiples líneas
"""

Ejemplo del código analizado


#Actividad 8
#Crear la matriz completa con numpy
#Verificar que se haya ingresado exactamente 9 elementos

Buenas Prácticas
• Escribe comentarios que expliquen el POR QUÉ, no el QUÉ (el código ya dice el qué).
• Usa comentarios de bloque (""" """) para documentar funciones o módulos.
• No dejes código comentado en producción: usa control de versiones (git) en su lugar.
• Los comentarios deben actualizarse cuando el código cambia.

1.2 Variables
Definición
Una variable es un nombre simbólico que apunta a un objeto almacenado en la memoria del
computador. En Python, las variables no tienen tipo fijo; el tipo pertenece al objeto, no a la
variable.
Propósito
Almacenar valores para reutilizarlos, modificarlos y pasarlos a funciones o estructuras.
Funcionamiento interno
Cuando escribes nombre = 'Ana', Python: (1) crea el objeto string 'Ana' en memoria, (2) crea la
variable nombre en el espacio de nombres local, (3) hace que nombre apunte (referencie) a ese
objeto.
Sintaxis
nombre_variable = valor

Reglas de nomenclatura
• Solo letras, números y guion bajo (_).
• No puede empezar con número.
• Python distingue mayúsculas: edad ≠ Edad ≠ EDAD.
• No usar palabras reservadas: if, for, while, etc.
Ejemplo del código analizado
nombre = input('Ingresa tu nombre') # Actividad 3
edad_futura = edad + 12 # Actividad 3
velocidad = [Link]([100,200,...,800]) # Actividad 6
determinante = [Link](cargas) # Actividad 7

Errores comunes
• Usar nombres sin asignar: NameError: name 'x' is not defined.
• Confundir = (asignación) con == (comparación).
• Nombres no descriptivos: x, a, b en lugar de velocidad_maxima.

1.3 Tipos de Datos


Tipo Descripción Ejemplo en código Función de conversión
int Número entero edad = 25 int()
float Número decimal lado1 = float(input(...)) float()
str Cadena de texto nombre = 'Ana' str()
bool Verdadero/Falso if edad > 0: bool()
list Lista ordenada [100,200,300] list()

Conversión de tipos (casting)


Python no convierte tipos automáticamente. Es necesario hacerlo de forma explícita.
edad = int(input('Ingresa tu edad: ')) # input() devuelve str, int() convierte a
entero
lado1 = float(input('Primer lado')) # float() convierte a número decimal

IMPORTANTE: Si el usuario escribe 'abc' cuando se espera un número, int() o float() lanzarán un
ValueError. Por eso los programas usan try-except.

1.4 Operadores
Operadores Aritméticos
Operador Descripción Ejemplo Resultado
+ Suma edad + 12 edad_futura
- Resta A-B diferencia de matrices
* Multiplicación A*B producto elemento a
elemento
/ División real a/b float
// División entera 10 // 3 3
% Módulo (residuo) 10 % 3 1
** Potencia 2 ** 8 256

Operadores Relacionales (de comparación)


Operador Descripción Ejemplo del código Evalúa a
== Igual a lado1 == lado2 True o False
!= Diferente de estado != 'ok' True o False
> Mayor que edad > 59 True o False
< Menor que edad < 18 True o False
>= Mayor o igual edad >= 18 True o False
<= Menor o igual contador <= 5 True o False

Operadores Lógicos
Operador Descripción Ejemplo del código
and Verdadero si AMBAS condiciones (lado1+lado2>lado3) and (lado1+lado3>lado2)
son verdaderas and ...
or Verdadero si AL MENOS UNA es lado1==lado2 or lado1==lado3 or
verdadera lado2==lado3
not Invierte el valor lógico not True → False

Operadores de Asignación
contador = 1 # Asignación simple
contador += 1 # Equivale a: contador = contador + 1
hora_maxima = [Link](velocidad) + 1 # Asignación compuesta con expresión

1.5 Entrada y Salida: print() e input()


La función print()
Muestra texto o valores en la consola. Es la herramienta principal de salida estándar.
Sintaxis
print(valor1, valor2, ..., sep=' ', end='\n')

Parámetros
• valor1, valor2, ...: objetos a mostrar (se convierten a str automáticamente).
• sep: separador entre valores (por defecto un espacio).
• end: carácter final (por defecto salto de línea \n).
Cadenas f-string (formato)
Permiten incrustar expresiones dentro de una cadena usando {variable}.
print(f'Hola {nombre}, en 12 años tendrás {edad_futura} años.')
La f antes de las comillas activa el formato. Python evalúa las expresiones dentro de {} y las
sustituye por su valor.
Secuencias de escape en print
Secuencia Efecto
\n Salto de línea (nueva línea)
\t Tabulación horizontal
\\ Backslash literal

Ejemplo del código analizado


print('\nLas velocidades recabadas por hora, fueron de:', velocidad)
print('\nEl promedio de las velocidades registradas fue de:', promedio)

La función input()
Pausa la ejecución del programa y espera a que el usuario escriba algo y presione Enter.
Siempre devuelve un string (cadena de texto).
nombre = input('Ingresa tu nombre')
edad = int(input('Ingresa tu edad: ')) # Se convierte de str a int

Valor de retorno
Siempre devuelve str. Si necesitas un número, debes convertirlo explícitamente con int() o
float().
TRAMPA CLÁSICA: Si el usuario escribe '25' y no usas int(), la variable contendrá el string '25', no el
número 25. Sumar '25' + 12 dará TypeError.
CAPÍTULO 2: ESTRUCTURAS CONDICIONALES

Las estructuras condicionales permiten que el programa tome decisiones: ejecutar diferentes
bloques de código según si una condición es verdadera o falsa.

2.1 La instrucción if
Definición
if evalúa una expresión booleana. Si es True, ejecuta el bloque indentado que le sigue. Si es
False, lo omite.
Sintaxis
if condicion:
# bloque que se ejecuta si condición es True

Evaluación de la condición
Python convierte internamente cualquier expresión a bool. Los siguientes valores son 'falsy'
(equivalen a False): 0, 0.0, '', None, [], {}, (). Todos los demás son 'truthy'.
Qué sucede si se cumple
Python ejecuta TODAS las líneas indentadas bajo el if. Al terminar el bloque, continúa con el
código después del condicional.
Qué sucede si NO se cumple
Python salta completamente el bloque indentado y continúa con elif, else, o el código siguiente.
Ejemplo del código analizado
if edad >= 18:
print('Eres mayor de edad') # Actividad 1, Actividad 3

2.2 La instrucción elif


Definición
elif (else if) agrega condiciones adicionales que se evalúan únicamente si el if (o elif anterior)
fue False.
Funcionamiento
Python evalúa las condiciones de arriba hacia abajo. En cuanto una es True, ejecuta su bloque
y salta todas las demás. Si ninguna es True, se ejecuta el else (si existe).
Ejemplo del código analizado
if edad < 18:
print('Aún no puedes ingresar al programa de ingenierías')
elif edad > 59:
print('Puedes participar como asesor técnico especializado')
else:
print('Bienvenido al programa Ingeniería en Diseño Aeronáutico')

2.3 La instrucción else


Definición
else es el bloque 'por defecto'. Se ejecuta cuando NINGUNA condición anterior (if ni elif) fue
True. No lleva condición.

2.4 Árbol de decisiones conceptual


Diagrama de flujo (conceptual): INICIO | v [if condición1] --> True --> [Bloque 1] --> FIN DEL
CONDICIONAL | False | v [elif condición2] --> True --> [Bloque 2] --> FIN DEL
CONDICIONAL | False | v [else] --> [Bloque por defecto] --> FIN DEL CONDICIONAL

2.5 Condicionales anidados


Un condicional puede estar dentro de otro. Esto ocurre en la Actividad 4 para la clasificación de
triángulos:
if (lado1 + lado2 > lado3) and (lado1 + lado3 > lado2) and (lado2 + lado3 > lado1):
# Solo si es triángulo válido, clasificar
if lado1 == lado2 == lado3:
print('Es un triángulo equilátero')
elif lado1==lado2 or lado1==lado3 or lado2==lado3:
print('Es un triángulo isóseles')
else:
print('Es un triángulo escaleno')
else:
print('Las medidas ingresadas no forman un triángulo válido')

REGLA DE VALIDACIÓN DE TRIÁNGULO: La suma de dos lados cualesquiera debe ser mayor al
tercer lado. Este es el 'Teorema de desigualdad triangular'.

2.6 Operadores lógicos en condicionales


Operador and
La condición completa es True solo si TODAS las sub-condiciones son True. Python usa
'evaluación en cortocircuito': si la primera es False, no evalúa las siguientes.
if (lado1 + lado2 > lado3) and (lado1 + lado3 > lado2) and (lado2 + lado3 > lado1):

Operador or
La condición es True si al menos UNA de las sub-condiciones es True.
elif lado1==lado2 or lado1==lado3 or lado2==lado3:

Comparación encadenada
Python permite comparaciones encadenadas de forma natural y legible:
if lado1 == lado2 == lado3: # Equivale a: lado1==lado2 and lado2==lado3

2.7 Errores Comunes en Condicionales


• Usar = en lugar de == en la condición: if edad = 18: es SyntaxError.
• Olvidar los dos puntos : al final del if/elif/else.
• Indentación incorrecta: Python usa la indentación para delimitar bloques.
• Condiciones que siempre son True o siempre son False (lógica incorrecta).

2.8 Buenas Prácticas en Condicionales


• Simplifica condiciones negativas: en lugar de if not (x < 0), usa if x >= 0.
• Evita más de 3 niveles de anidamiento; extrae bloques a funciones.
• El elif es más eficiente que múltiples if independientes cuando las condiciones son
excluyentes.
• Agrega siempre un else para manejar el caso inesperado.
CAPÍTULO 3: CICLOS (BUCLES)

Un ciclo permite repetir un bloque de código múltiples veces. Python tiene dos tipos: for
(número conocido de iteraciones) y while (condición de parada).

3.1 El ciclo for


Definición
for itera sobre una secuencia (lista, rango, cadena, etc.) ejecutando el bloque una vez por cada
elemento.
Objetivo del ciclo
Ejecutar un bloque de código un número definido de veces, o recorrer los elementos de una
colección.
Cuándo utilizarlo
• Cuando conoces de antemano cuántas iteraciones se necesitan.
• Para recorrer listas, arrays, cadenas o cualquier iterable.
• Para aplicar una operación a cada elemento de una colección.
Sintaxis
for variable in iterable:
# bloque que se ejecuta por cada elemento

La función range()
range() genera una secuencia de números enteros. Es el iterable más común con for.
range(n) # 0, 1, 2, ..., n-1
range(start, n) # start, start+1, ..., n-1
range(start, n, step) # con incremento step

Condición de continuación
El ciclo continúa mientras queden elementos en el iterable. Cuando se agota la secuencia, el
ciclo termina naturalmente.
Condición de terminación
El ciclo termina cuando: (a) se agotan todos los elementos del iterable, o (b) se encuentra un
break.
Ejemplo del código analizado
for i in range(10): # Actividad 3: itera 0..9
if i == 5:
break # termina en 5
print(i) # imprime 0,1,2,3,4

for n in range(n): # Actividad 5: n revisiones


print('Revisión', n+1)
for fila in matriz: # Actividad 1: recorrer lista de listas
print(fila)

Flujo completo del ciclo for


1. Python evalúa el iterable y crea un 'iterador' interno. 2. Asigna el primer elemento a la variable. 3.
Ejecuta el bloque indentado. 4. Regresa al inicio, asigna el siguiente elemento. 5. Repite hasta
agotar el iterable o encontrar break. 6. Continúa con el código después del ciclo.

3.2 El ciclo while


Definición
while ejecuta un bloque de código repetidamente MIENTRAS una condición sea True.
Cuándo utilizarlo
• Cuando no sabes de antemano cuántas iteraciones se necesitan.
• Para esperar hasta que el usuario ingrese un valor válido (validación de entrada).
• Para mantener un programa activo hasta que se cumpla una condición de salida.
Cuándo evitarlo
• Cuando conoces el número de iteraciones: usa for.
• Cuando hay riesgo de ciclo infinito y no hay condición de salida segura.
Condición de continuación
El ciclo continúa mientras la condición sea True. Si la condición nunca se vuelve False, el ciclo
es infinito.
Qué sucede si nunca termina
El programa se 'cuelga'. En una aplicación de consola, el usuario debe interrumpirlo
manualmente con Ctrl+C. En sistemas en producción, puede consumir recursos hasta colapsar
el servidor.
Sintaxis
while condicion:
# bloque que se ejecuta mientras condicion sea True

Ejemplo 1: ciclo con condición de variable


contador = 1
while contador <= 5: # Actividad 1
print(contador)
contador += 1 # CRÍTICO: actualizar la condición

Ejemplo 2: while True con break


while True: # Actividad 3: ciclo infinito
try:
edad = int(input('Ingresa tu edad: '))
if edad > 0:
break # Salida controlada
else:
print('La edad debe ser un número positivo')
except ValueError:
print('Debes ingresar un número válido.')

Ejemplo 3: while con input de estado


estado = input('Estado de inspección (ok, daño):').lower()
while estado == 'ok': # Actividad 5
estado = input('Estado de inspección (ok, daño):').lower()

3.3 La instrucción break


Definición
break termina inmediatamente el ciclo más cercano (for o while) en que se encuentra, sin
importar si la condición de continuación aún es True.
Flujo de ejecución
ANTES de break: el ciclo está activo. AL ENCONTRAR break: Python sale del ciclo inmediatamente.
DESPUÉS de break: continúa con la primera línea DESPUÉS del bloque del ciclo.

Ejemplo del código analizado


for i in range(10):
if i == 5:
break # Sale cuando i es 5: imprime 0,1,2,3,4
print(i)

3.4 La instrucción continue


Definición
continue omite el resto del bloque actual y salta a la siguiente iteración del ciclo.
Diferencia con break
Instrucción Efecto El ciclo continúa?
break Termina el ciclo completamente No
continue Salta la iteración actual Sí

3.5 Ciclos anidados


Un ciclo dentro de otro. Útil para recorrer matrices (listas de listas).
matriz = [[1,2,3], [4,5,6], [7,8,9]]
for fila in matriz: # ciclo externo: recorre filas
print(fila) # imprime cada fila

Complejidad computacional
Un ciclo anidado tiene complejidad O(n²): si cada ciclo itera n veces, en total son n × n = n²
operaciones. Para matrices 3×3 son 9 operaciones; para 1000×1000 serían 1,000,000.
3.6 Errores Comunes en Ciclos
• Olvidar actualizar la variable de condición en while: genera ciclo infinito.
• Off-by-one: range(5) genera 0..4, no 0..5.
• Modificar la lista sobre la que se itera en un for: comportamiento inesperado.
• break dentro de un ciclo anidado solo termina el ciclo MÁS INTERNO.
CAPÍTULO 4: MANEJO DE EXCEPCIONES

Una excepción es un error que ocurre durante la ejecución del programa. Sin manejo de
excepciones, el error detiene el programa abruptamente. Con try-except, podemos capturar el
error y responder de forma controlada.

4.1 La instrucción try-except


Sintaxis
try:
# bloque de código que puede generar error
except TipoDeError:
# bloque que se ejecuta si ocurre el error

Funcionamiento paso a paso


1. Python intenta ejecutar el bloque try.
2. Si NO ocurre error: el bloque except se OMITE.
3. Si OCURRE el error especificado: Python salta al bloque except.
4. Si ocurre un error DISTINTO al especificado: se propaga como excepción no manejada.

Ejemplo del código analizado – Actividad 3


while True:
try:
edad = int(input('Ingresa tu edad: '))
if edad > 0:
break
else:
print('La edad debe ser un número positivo')
except ValueError:
print('Debes ingresar un número válido.')

Ejemplo del código analizado – Actividad 8


try:
entrada_str = input()
elementos_str = entrada_str.split(',')
elementos = [int([Link]()) for e in elementos_str]
if len(elementos) != 9:
print('Error: Debes ingresar exactamente 9 números.')
else:
# ... procesamiento de la matriz
except ValueError:
print('Error: Asegúrese de ingresar solo números enteros separados por coma.')
4.2 La excepción ValueError
Definición
ValueError se lanza cuando una función recibe un argumento del tipo correcto pero con un
valor inapropiado. Ejemplo: int('abc') — es un string (tipo correcto para int()), pero 'abc' no es
convertible a entero.
Casos que generan ValueError
• int('abc') → ValueError: invalid literal for int()
• float('texto') → ValueError
• int('') → ValueError (string vacío)

4.3 Tipos de Excepciones en Python


Excepción Cuándo ocurre
ValueError Valor incorrecto para la operación (ej: int('abc'))
TypeError Tipo de dato incorrecto (ej: 'hola' + 5)
IndexError Índice fuera del rango de lista (ej: lista[10] con 3 elementos)
ZeroDivisionError División entre cero
NameError Variable no definida
FileNotFoundError Archivo no encontrado al intentar abrirlo

4.4 Buenas Prácticas en Excepciones


• Captura excepciones ESPECÍFICAS, nunca solo 'except:' (captura ciega).
• Muestra un mensaje útil al usuario que explique qué salió mal y cómo corregirlo.
• No uses try-except para controlar el flujo normal del programa; úsalo solo para errores
reales.
• Puedes agregar 'else' (se ejecuta si NO hubo error) y 'finally' (se ejecuta SIEMPRE) a
try-except.
CAPÍTULO 5: LISTAS Y COMPRENSIONES DE LISTA

5.1 Listas
Definición
Una lista es una colección ordenada y mutable de elementos. Puede contener cualquier tipo de
dato, incluso listas dentro de listas (listas anidadas).
Sintaxis
lista = [elemento1, elemento2, ..., elementoN]

Acceso por índice


Los elementos se acceden por su posición (índice). El primer elemento tiene índice 0.
vector = [1, 2, 3, 4]
print(vector[1]) # imprime 2 (índice 1 = segundo elemento)

Listas anidadas (matrices)


matriz = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]
print(matriz[1][1]) # 5 — fila 1, columna 1

5.2 Comprensión de Lista (List Comprehension)


Definición
Una comprensión de lista es una forma concisa de crear una lista a partir de otra secuencia
aplicando una expresión y opcionalmente un filtro.
Sintaxis
[expresion for variable in iterable if condicion]

Ejemplo del código analizado – Actividad 8


elementos = [int([Link]()) for e in elementos_str]
Lectura: 'Para cada elemento e en elementos_str, conviértelo a int después de eliminar
espacios, y añádelo a la lista elementos.'
Equivalente sin comprensión
elementos = []
for e in elementos_str:
[Link](int([Link]()))

Métodos importantes de listas


Método Descripción Ejemplo
append(x) Agrega x al final [Link](10)
split(sep) Divide str en lista '1,2,3'.split(',')
strip() Elimina espacios extremos ' 5 '.strip() → '5'
len(lista) Número de elementos len([1,2,3]) → 3

5.3 La función len()


Propósito
Devuelve el número de elementos de una secuencia (lista, string, array NumPy, etc.).
if len(elementos) != 9: # Actividad 8
print('Error: Debes ingresar exactamente 9 números.')
CAPÍTULO 6: FUNCIONES INTEGRADAS (BUILT-IN)

Python incluye un conjunto de funciones disponibles en cualquier momento, sin necesidad de


importar ningún módulo. Se llaman 'built-in functions'.

6.1 int()
Propósito
Convierte un valor a entero. Si el valor es un string numérico ('25'), devuelve el entero 25. Si
contiene caracteres no numéricos, lanza ValueError.
edad = int(input('Ingresa tu edad: '))
elementos = [int([Link]()) for e in elementos_str]

6.2 float()
Propósito
Convierte un valor a número de punto flotante (decimal).
lado1 = float(input('Ingresa la medida del primer lado'))

6.3 input()
Detallado en la sección 1.5. Siempre devuelve str.

6.4 print()
Detallado en la sección 1.5.

6.5 range()
Propósito
Genera una secuencia inmutable de enteros. No crea la lista en memoria; la genera bajo
demanda (es un generador).
range(5) # 0, 1, 2, 3, 4
range(1, 6) # 1, 2, 3, 4, 5
range(0, 10, 2) # 0, 2, 4, 6, 8

6.6 len()
Propósito
Devuelve la longitud (número de elementos) de cualquier secuencia u objeto con método
__len__.
if len(elementos) != 9: ... # Actividad 8

6.7 [Link]()
Propósito
Convierte todos los caracteres de un string a minúsculas. Útil para comparaciones sin distinción
de mayúsculas.
tipo_usuario = input('...').lower() # Actividad 5
# Si el usuario escribe 'OPERADOR', 'Operador' o 'operador', all equal 'operador'

6.8 [Link]()
Propósito
Divide un string en una lista usando un separador. Por defecto usa cualquier espacio en blanco.
elementos_str = entrada_str.split(',')
# '1, 2, 3, 4, 5, 6, 7, 8, 9'.split(',')
# → ['1', ' 2', ' 3', ' 4', ' 5', ' 6', ' 7', ' 8', ' 9']

6.9 [Link]()
Propósito
Elimina espacios en blanco (u otros caracteres) al inicio y al final de un string.
int([Link]()) # ' 5 ' → '5' → 5
CAPÍTULO 7: BIBLIOTECA NumPy

NumPy (Numerical Python) es la biblioteca fundamental para el cálculo científico en Python.


Proporciona arrays multidimensionales altamente optimizados y un conjunto completo de
funciones matemáticas.

7.1 Descripción general de NumPy


Por qué NumPy y no listas de Python?
# Con listas de Python: Requiere comprensión de lista o ciclo for.
lista = [1,2,3] No es eficiente con grandes volúmenes.
lista2 = [4,5,6] No soporta álgebra lineal directamente.
resultado = [lista[i]+lista2[i] Cada elemento es un objeto Python separado.
for i in range(3)]

# Con NumPy: Operaciones vectoriales directas.


import numpy as np Implementado en C: muy rápido.
a = [Link]([1,2,3]) Soporte completo de álgebra lineal.
b = [Link]([4,5,6]) Los datos se almacenan en bloques contiguos de
print(a + b) # [5, 7, 9] memoria.

7.2 Importar NumPy


import numpy as np
El alias 'np' es una convención universal en la comunidad científica de Python. Permite escribir
[Link]() en lugar de [Link]().

7.3 [Link]() – Crear arrays y matrices


Propósito
Crea un array NumPy (ndarray) a partir de una lista o lista de listas de Python.
Sintaxis
[Link](objeto, dtype=None)

Parámetros
• objeto: lista, tupla, o cualquier iterable de Python.
• dtype: tipo de dato (int32, float64, etc.). NumPy lo infiere automáticamente si no se
especifica.
Valor de retorno
Un objeto ndarray (N-dimensional array).
Ejemplos del código analizado
# Vector 1D (Actividad 6)
velocidad = [Link]([100, 200, 300, 400, 500, 600, 700, 800])

# Matriz 2D (Actividad 6.1 - consumo de combustible)


costos = [Link]([
[100, 200, 300],
[400, 500, 600],
[700, 800, 900]
])

# Matriz 2D (Actividad 1.2)


A = [Link]([[1, 2], [3, 4]])
B = [Link]([[5, 6], [7, 8]])

7.4 .reshape() – Reformar arrays


Propósito
Cambia la forma (dimensiones) de un array sin modificar sus datos.
Sintaxis
[Link](filas, columnas)

Ejemplo del código analizado – Actividad 8


matriz_3x3 = [Link](elementos).reshape(3, 3)
Toma los 9 elementos de la lista plana y los organiza en una matriz de 3 filas × 3 columnas.
IMPORTANTE: El número total de elementos debe coincidir. Un array de 9 elementos puede
reshapearse a (3,3), (9,1), (1,9) o (9,), pero NO a (4,3) porque 4×3=12 ≠ 9.

7.5 Indexado y Slicing de arrays NumPy


Indexado 1D
velocidad[0] # primer elemento: 100
velocidad[-1] # último elemento: 800

Indexado 2D
# Sintaxis: array[fila, columna]
matriz_3x3[1] # fila completa con índice 1
matriz_3x3[0, 1] # elemento en fila 0, columna 1

En NumPy los índices siempre empiezan en 0. matriz[1] es la SEGUNDA fila. matriz[0,1] es el


elemento en la PRIMERA fila, SEGUNDA columna.

7.6 Operaciones Aritméticas sobre Arrays


Operaciones elemento a elemento
# Actividad 1
a = [Link]([1, 2, 3])
b = [Link]([4, 5, 6])
print('Suma:', a + b) # [5, 7, 9]
print('Resta:', a - b) # [-3, -3, -3]
print('Multiplicación:', a*b) # [4, 10, 18]
print('División:', a/b) # [0.25, 0.4, 0.5]

Operaciones matriciales en Actividad 7


suma = A + B # suma elemento a elemento
resta = A - B # resta elemento a elemento
multiplicacion = A*B # multiplicación elemento a elemento (NO matricial)

7.7 [Link]() – Producto punto (matricial)


Propósito
Calcula el producto punto (dot product) de dos arrays. Para vectores 1D, es la suma de
productos de elementos correspondientes. Para matrices 2D, realiza la multiplicación matricial
estándar.
Fórmula
Para vectores: dot(a,b) = a[0]*b[0] + a[1]*b[1] + ... + a[n]*b[n]
Ejemplo del código analizado – Actividad 1
[Link](a, b) # 1*4 + 2*5 + 3*6 = 4 + 10 + 18 = 32

Ejemplo con matrices – Actividad 1.2


A = [Link]([[1,2],[3,4]])
B = [Link]([[5,6],[7,8]])
C = [Link](A, B)
# Resultado: [[1*5+2*7, 1*6+2*8], [3*5+4*7, 3*6+4*8]]
# = [[19, 22], [43, 50]]

7.8 Propiedades de arrays: shape, size, ndim


m = [Link]([[1,2,3], [4,5,6]])
print('Forma:', [Link]) # (2, 3) — 2 filas, 3 columnas
print('Número de elementos:', [Link]) # 6
print('Dimensiones:', [Link]) # 2

Atributo Descripción Ejemplo


.shape Tupla con las dimensiones (2,3) para 2×3
.size Total de elementos 6 para 2×3
.ndim Número de dimensiones 2 para matriz, 1 para vector
7.9 Funciones Estadísticas de NumPy
Función Propósito Ejemplo del código
[Link]() Suma total de elementos total = [Link](velocidad)
[Link]() Promedio aritmético promedio = [Link](velocidad)
[Link]() Valor máximo vel_max = [Link](velocidad)
[Link]() Valor mínimo temp_min = [Link](temperaturas)
[Link]() Índice del valor máximo hora_maxima = [Link](velocidad)+1

El parámetro axis
En matrices 2D, el parámetro axis controla la dirección de la operación:
total_por_motor = [Link](costos, axis=1) # suma cada FILA (→ horizontal)
total_por_hora = [Link](costos, axis=0) # suma cada COLUMNA (↓ vertical)

Regla mnemotécnica: axis=0 → opera sobre las FILAS (suma columnas hacia abajo ↓) axis=1 →
opera sobre las COLUMNAS (suma filas hacia la derecha →)

7.10 [Link]() – Índice del máximo


Propósito
Devuelve el ÍNDICE (posición) del elemento máximo, no el valor máximo en sí. Para obtener el
valor, usa [Link]().
hora_maxima = [Link](velocidad) + 1
Se suma +1 porque [Link] devuelve índice base-0 (0..7), pero las horas cuentan desde 1
(1..8).

7.11 Transpuesta de una Matriz: .T


Propósito
La transpuesta de una matriz intercambia filas por columnas. Si A tiene forma (m×n), A.T tiene
forma (n×m).
A = [Link]([[1, 2], [3, 4]])
A_T = A.T
# A: [[1, 2], A.T: [[1, 3],
# [3, 4]] [2, 4]]

Ejemplo del código analizado – Actividad 1.2 y Actividad 7


A_T = A.T # Actividad 1.2
transpuesta = matriz.T # Actividad 7

7.12 [Link]() – Inversa de una Matriz


Propósito
Calcula la matriz inversa A⁻¹ tal que A × A⁻¹ = I (matriz identidad).
Requisito
La matriz DEBE ser cuadrada (n×n) y NO singular (su determinante debe ser distinto de cero).
A_inv = [Link](A)

Verificación – Actividad 1.2


I = [Link](A, A_inv)
# Resultado debe ser la identidad [[1,0],[0,1]] (con pequeños errores numéricos)

IMPORTANTE: Si la matriz es singular (determinante = 0), [Link]() lanzará LinAlgError. Por


eso Actividad 7 ejercicio 3 usa una matriz con elemento [0,0]=110 para que no sea singular.

7.13 [Link]() – Determinante


Propósito
Calcula el determinante de una matriz cuadrada. El determinante tiene múltiples aplicaciones:
indica si la matriz es invertible (det ≠ 0), mide el factor de escala de la transformación lineal, etc.
determinante = [Link](cargas)

Ejemplo del código analizado – Actividad 7 Ejercicio 4


cargas = [Link]([[110,200,300],
[400,500,600],
[700,800,900]])
determinante = [Link](cargas)
El resultado es prácticamente 0 (la matriz es casi singular), lo que indica que las filas son casi
linealmente dependientes.

7.14 Resumen de funciones NumPy utilizadas


Función/Atributo Categoría Actividad donde aparece
[Link]() Creación Todas
[Link]().reshape() Transformación Actividad 8
array[i], array[i,j] Indexado Actividad 8
[Link]() Estadística Actividades 6, 6.1, 7
[Link]() Estadística Actividades 6, 7
[Link]() Estadística Actividades 6, 7
[Link]() Estadística Actividad 7
[Link]() Estadística Actividades 6, 6.1
[Link]() Álgebra lineal Actividades 1, 1.2
array.T Álgebra lineal Actividades 1.2, 7
[Link]() Álgebra lineal Actividades 1.2, 7
[Link]() Álgebra lineal Actividad 7
.shape, .size, .ndim Propiedades Actividad 1
[Link](axis=0/1) Estadística matricial Actividad 6.1
CAPÍTULO 8: EJEMPLOS EXTRAÍDOS DE LOS
CÓDIGOS

8.1 Actividad 3 – Validación de entrada con while, try-except


Este es el patrón más robusto para solicitar datos al usuario: combina ciclo infinito (while True),
manejo de excepciones (try-except) y salida controlada (break).
nombre = input('Ingresa tu nombre')
while True:
try:
edad = int(input('Ingresa tu edad: '))
if edad > 0:
break # salida exitosa
else:
print('La edad debe ser un número positivo')
except ValueError:
print('Debes ingresar un número válido.')
edad_futura = edad + 12
print(f'Hola {nombre}, en 12 años tendrás {edad_futura} años.')

FLUJO DE EJECUCIÓN: 1. Se solicita el nombre. 2. Entra al ciclo infinito. 3. Intenta convertir la


entrada a int. 4. Si falla (ValueError), muestra error y regresa al inicio del ciclo. 5. Si tiene éxito pero
edad <= 0, pide de nuevo. 6. Si tiene éxito y edad > 0, ejecuta break y sale del ciclo. 7. Calcula y
muestra el mensaje.

8.2 Actividad 4 – Clasificación de triángulos


Demuestra el uso de operadores lógicos (and, or) y condicionales anidados.
lado1 = float(input('Ingresa la medida del primer lado'))
lado2 = float(input('Ingresa la medida del segundo lado'))
lado3 = float(input('Ingresa la medida del tercer lado'))
if (lado1+lado2>lado3) and (lado1+lado3>lado2) and (lado2+lado3>lado1):
if lado1 == lado2 == lado3:
print('Es un triángulo equilátero')
elif lado1==lado2 or lado1==lado3 or lado2==lado3:
print('Es un triángulo isóseles')
else:
print('Es un triángulo escaleno')
else:
print('Las medidas ingresadas no forman un triángulo válido')

8.3 Actividad 6 – Análisis de velocidades con NumPy


import numpy as np
velocidad = [Link]([100,200,300,400,500,600,700,800])
total = [Link](velocidad)
promedio = [Link](velocidad)
hora_maxima = [Link](velocidad) + 1
vel_max = [Link](velocidad)

[Link] devuelve 7 (índice base-0 del valor 800). Sumando +1 obtenemos hora 8, que es la
interpretación humana.

8.4 Actividad 6.1 – Análisis matricial con axis


costos = [Link]([[100,200,300],[400,500,600],[700,800,900]])
total_por_motor = [Link](costos, axis=1) # [600, 1500, 2400]
total_por_hora = [Link](costos, axis=0) # [1200, 1500, 1800]
motor_con_mayor_consumo = [Link](total_por_motor) + 1 # 3

8.5 Actividad 8 – Matriz 3×3 con reshape e indexado


import numpy as np
print('Ingrese los 9 elementos de la matriz 3x3, separados por comas:')
try:
entrada_str = input()
elementos_str = entrada_str.split(',')
elementos = [int([Link]()) for e in elementos_str]
if len(elementos) != 9:
print('Error: Debes ingresar exactamente 9 números.')
else:
matriz_3x3 = [Link](elementos).reshape(3,3)
print(matriz_3x3)
print(matriz_3x3[1]) # segunda fila
print(matriz_3x3[0,1]) # fila 0, columna 1
except ValueError:
print('Error: ingrese solo números enteros separados por coma.')
CAPÍTULO 9: EJERCICIOS DE PRÁCTICA

9.1 Ejercicios de Variables y Tipos


5. Declara una variable 'velocidad_maxima' con el valor 850.5 y muéstrala.
6. Solicita al usuario su nombre y ciudad, y muestra: 'Hola [nombre], reportando desde
[ciudad]'.
7. Convierte el string '3.14159' a float y multiplícalo por 2.

9.2 Ejercicios de Condicionales


8. Escribe un programa que solicite la temperatura de una turbina. Si es mayor a 800°C,
imprima 'ALERTA: temperatura crítica'. Si está entre 400 y 800, imprima 'Temperatura
normal'. Si es menor a 400, imprima 'Temperatura baja'.
9. Extiende la Actividad 4 para también calcular el área del triángulo usando la fórmula de
Herón: s=(a+b+c)/2, area=sqrt(s*(s-a)*(s-b)*(s-c)). (Pista: import math; [Link]())

9.3 Ejercicios de Ciclos


10. Usa un ciclo for para imprimir la tabla de multiplicar del número que el usuario ingrese.
11. Usa un ciclo while que solicite contraseñas hasta que el usuario ingrese
'aeronautica2024'. Cuenta los intentos fallidos.
12. Con un for anidado, genera e imprime una matriz de 4×4 donde cada elemento es el
producto de su fila y su columna (índice base 1).

9.4 Ejercicios de NumPy


13. Crea un vector con las 12 temperaturas mensuales promedio de una ciudad y calcula:
suma, promedio, máximo, mínimo y el mes con mayor temperatura.
14. Crea dos matrices 2×2: A = [[2,1],[5,3]] y B = [[3,-1],[-5,2]]. Verifica que son inversas
entre sí calculando A @ B (usa [Link]).
15. Crea una matriz 4×3 con [Link], imprime su forma (.shape), tamaño (.size) y
dimensiones (.ndim). Luego saca la suma de cada fila y cada columna usando axis.

9.5 Ejercicios de Manejo de Excepciones


16. Mejora el ejercicio de clasificación de triángulos añadiendo try-except para que maneje
el caso donde el usuario ingresa texto en lugar de números.
17. Escribe una función que solicite un número entre 1 y 10. Usa try-except para ValueError
y un while para repetir hasta obtener un número en el rango correcto.
CAPÍTULO 10: PREGUNTAS DE AUTOEVALUACIÓN

Responde las siguientes preguntas antes de ver las respuestas. Esto refuerza la retención del
conocimiento.

10.1 Preguntas de opción múltiple


18. ¿Qué devuelve siempre la función input()? a) int b) float c) str d) depende de lo que
ingrese el usuario
19. ¿Cuál es el resultado de range(3)? a) [1,2,3] b) [0,1,2] c) [0,1,2,3] d) (1,2,3)
20. ¿Qué índice tiene el ÚLTIMO elemento de [Link]([10,20,30,40])? a) 4 b) 3 c) -1 d) b
y c son correctas
21. ¿Qué hace axis=1 en [Link](matriz, axis=1)? a) Suma cada columna b) Suma cada
fila c) Suma todos los elementos d) Transpone la matriz

10.2 Preguntas de verdadero o falso


22. while True siempre genera un ciclo infinito que no puede detenerse. (V/F)
23. [Link]() devuelve el valor máximo de un array. (V/F)
24. Una lista en Python puede contener elementos de diferentes tipos de datos. (V/F)
25. elif puede usarse sin if previo. (V/F)

10.3 Preguntas de desarrollo


26. Explica con tus propias palabras qué ocurre cuando Python ejecuta 'int(input("Edad: "))'
y el usuario escribe 'veinticinco'.
27. ¿Cuál es la diferencia entre [Link](A,B) y A*B cuando A y B son matrices 2D?
28. Describe el patrón 'while True + try-except + break'. ¿Cuándo es útil?

Respuestas clave
1c | 2b | 3d | 4b 5F (break lo detiene) | 6F (devuelve el ÍNDICE) | 7V | 8F (elif requiere if) Desarrollo
1: int() intentará convertir 'veinticinco' y lanzará ValueError. Desarrollo 2: A*B multiplica elemento a
elemento; [Link](A,B) hace multiplicación matricial. Desarrollo 3: Útil cuando necesitas repetir hasta
obtener entrada válida, sin saber cuántos intentos tomará.
CAPÍTULO 11: GLOSARIO TÉCNICO

Término Definición
ndarray N-dimensional array. El tipo de dato central de NumPy.
dtype Data type. El tipo de dato de los elementos del array (int32, float64, etc.).
shape Tupla que describe las dimensiones de un array (filas, columnas, ...).
axis Eje de operación. axis=0 opera sobre filas; axis=1 opera sobre columnas.
reshape Cambiar la forma de un array manteniendo el número total de elementos.
broadcasting Mecanismo de NumPy para operar arrays de formas diferentes de forma
implícita.
índice base-0 En Python y NumPy, los índices comienzan en 0, no en 1.
ValueError Excepción lanzada cuando una función recibe un valor inapropiado.
f-string Cadena de formato (f'...') que permite incrustar expresiones Python.
comprensión de lista Sintaxis concisa [expr for x in iterable] para crear listas.
built-in Funciones integradas en Python: print, input, int, float, len, range.
iterable Cualquier objeto que puede recorrerse con for: lista, range, string, array.
alias (import as) Nombre corto asignado a un módulo: import numpy as np.
producto punto Operación lineal: sum(a[i]*b[i]). Para matrices: [Link](A,B).
transpuesta Matriz obtenida intercambiando filas y columnas. En NumPy: A.T.
inversa Matriz A⁻¹ tal que A × A⁻¹ = I. En NumPy: [Link](A).
determinante Escalar que resume propiedades de la matriz. En NumPy: [Link](A).
ciclo infinito Ciclo cuya condición nunca se vuelve False. Se detiene con break.
break Instrucción que termina inmediatamente el ciclo más cercano.
continue Instrucción que salta la iteración actual y pasa a la siguiente.
CAPÍTULO 12: BUENAS PRÁCTICAS GENERALES DE
PROGRAMACIÓN EN PYTHON

12.1 Legibilidad y Estilo (PEP 8)


• Usa nombres descriptivos: velocidad_maxima en lugar de vmax o x.
• Usa snake_case para variables y funciones: nombre_completo, no nombreCompleto.
• 4 espacios de indentación (nunca tabs mezclados con espacios).
• Máximo 79 caracteres por línea.
• Una línea en blanco entre secciones lógicas; dos líneas entre funciones.

12.2 Comentarios
• Comenta el POR QUÉ, no el QUÉ. El código ya expresa el qué.
• Mantén los comentarios actualizados. Un comentario falso es peor que ninguno.
• Usa docstrings ("""...""") para documentar funciones y módulos.

12.3 Manejo de Errores


• Siempre captura excepciones específicas, nunca solo 'except:'.
• Proporciona mensajes de error útiles al usuario.
• Valida la entrada del usuario antes de procesarla.

12.4 Trabajo con NumPy


• Prefiere operaciones vectorizadas ([Link], [Link]) sobre ciclos for cuando trabajes
con arrays.
• Verifica las dimensiones (.shape) antes de operar con matrices.
• Recuerda que los índices en NumPy son base-0: la primera fila es [0], no [1].
• Usa axis= explícitamente para evitar confusiones en operaciones matriciales.

12.5 Modularidad
• Divide programas grandes en funciones pequeñas con una sola responsabilidad.
• Evita código duplicado: si repites un bloque 3 veces, conviértelo en función.
• Usa constantes con nombre para valores mágicos: NUM_ELEMENTOS = 9 en lugar de
comparar directamente con 9.

12.6 Flujo del Programa


• Valida entradas al inicio antes de procesar.
• Separa la lógica de presentación (print) de los cálculos.
• Usa el patrón while True + try-except + break para validación de entrada robusta.

RECUERDA: Un buen código no es solo el que funciona, sino el que puede ser leído, entendido y
mantenido por otra persona (o por ti mismo 6 meses después).

También podría gustarte