Introducción a la programación
La programación es el proceso de crear un conjunto de instrucciones que le indican a una computadora qué hacer. Estas instrucciones se desarrollan para resolver un problema, realizar tareas de manera automatizada, desarrollo de software e incluso diseño de videojuegos!
Cada programa puede entenderse como un sistema de entradas y salidas donde cada acción genera una reacción correspondiente. Este proceso se puede dividir en tres partes esenciales:
- Entradas (Inputs): Las entradas son los datos o información que se proporciona al programa para que realice alguna acción. Estas entradas pueden provenir de diversas fuentes, como el usuario que interactúa con una interfaz de usuario, un formulario online, o el mensaje enviado durante un chat. Las entradas son esenciales para que un programa realice tareas específicas.
- Proceso (Process): El proceso representa a las operaciones que el programa realiza en función de las entradas proporcionadas. Estas acciones son comúnmente representadas como pantallas de carga donde el proceso en el fondo involucra el núcleo de nuestro programa. Estos pueden involucrar cálculos matemáticos, manipulación de datos o toma de decisiones. Estos procesos son lo que hacen que un programa sea útil y funcional.
- Resultado (Output): El resultado es la información o acción que el programa genera como salida después de procesar las entradas. Los resultados pueden presentarse al usuario en una interfaz, guardarse en un archivo o utilizarse como entrada para acciones posteriores. Los resultados permiten que el usuario obtenga un valor de las acciones realizadas por el programa.
Un ejemplo en el contexto de los videojuegos puede ser representado como la interacción entre el jugador y el personaje.
- La entrada es representada mediante la pulsación de un botón donde nuestro programa procesara esta pulsación y enviarla la acción correspondiente.
TODO: Insertar animación
Hello World!
"Hola, mundo" Un sencillo ejemplo de cómo podemos representar el principio de entrada, proceso y salida.
- Entrada: En este programa, la entrada podría ser cualquier cadena de caracteres que deseemos mostrar en la salida.

- Proceso: La acción principal de este programa es imprimir el texto "Hello, world!" en la pantalla.

- Resultado (Salida): El resultado o salida de este programa es el texto "Hello, world!" que se muestra en la pantalla del computador.

Variables
Las variables son como contenedores en los que puedes almacenar diferentes tipos de datos, como números, texto y otros valores.

Declaración de variables
Para crear una variable en Python, simplemente elige un nombre descriptivo y asigna un valor utilizando el operador de asignación
=
.nombre = "Juan"
edad = 25
saldo_bancario = 1000.50
Nombres de variables
Los nombres de las variables en Python deben seguir algunas reglas:
- Las variables deben comenzar con una letra (a-z, A-Z) o un guion bajo (_).

Asignar un nombre a una variable en la que el primer carácter sea un número o un carácter especial resultará en un error de compilación.
Nombres Simbólicos
Gracias a las variables, podemos asignar nombres representativos a nuestros valores de entrada y utilizar esos nombres a lo largo de la ejecución de nuestro programa.

Secuencia de ejecución
En Python, el código se ejecuta secuencialmente, de arriba a abajo y línea por línea. Esto implica que debemos asignar un valor a una variable antes de poder utilizarla posteriormente en el código.

print(saludo) ## NameError: name 'saludo' is not defined
saludo = "Hola Mundo"
Intentar acceder a una variable cuando aun ha sido declarada nos dará como resultado un ”is not defined” error.
Reasignación de variables
Teniendo en cuenta la secuencia de ejecución, en Python puedes cambiar el valor almacenado en una variable simplemente reasignando a el nombre de la variable un nuevo valor en líneas posteriores.

En ese caso la función
print()
operara con el ultimo valor asignado: (30
).Tipos de datos
Los tipos de datos son esenciales para la programación. Casi todos, si no la gran mayoría, de los lenguajes de programación comparten una serie de datos esenciales que nos ayudarán a interpretar nuestras ideas de la mejor manera posible.
Cadenas de Texto (Strings)
Las cadenas de texto, también conocidas como Strings, son utilizadas para representar secuencias de caracteres, como palabras, frases o texto en general.

Las comillas no se mostraran como parte de la salida.
Eliminar las comillas dará a entender que no deseas utilizar una cadena de texto, lo que significa que el intérprete de Python tomará el texto como otra variable.
Números Enteros (Integers)
Los números enteros se utilizan para representar valores numéricos completos, tales como 1, -5 o 1000, sin incluir decimales ni fracciones.

En Python, las representaciones numéricas no requiere especificar comillas; el intérprete asume automáticamente que los números enteros son del tipo
int
.La representación de números grandes usando comas después de cada tres dígitos no mostrará el número de manera correcta. Se requiere que uses solo dígitos numéricos en los números enteros y evites las comas como separadores.
Números Decimales (Floats)
Los números decimales, o números de punto flotante, se emplean para representar valores numéricos que incluyen decimales, como
3.14
, -0.5
o 2.0
.
En Python, las representaciones numéricas no requiere especificar comillas; el intérprete asume automáticamente que los números separados por un punto son del tipo
float
.La representación decimal debe llevarse a cabo utilizando el punto. El uso de la coma hará que el número no se muestre ni se interprete de manera correcta.
Valores Lógicos (Booleanos)
Los valores booleanos pueden ser utilizados para realizar representaciones lógicas o para representar el estado de una aplicación. Estos valores se definen como 'verdadero' (true) o 'falso' (false).

Python interpreta las palabras (True) y (False) como valores lógicos. Debido a que estas palabras están reservadas, estos no se pueden utilizar como nombres de variables.
Operadores
Un operador es un símbolo que se utiliza para realizar operaciones entre distintos tipos de datos.
Operadores aritméticos
Estos operadores se utilizan para realizar operaciones matemáticas básicas, como la suma (+), resta (-), multiplicación (*) y división (/). Junto a operaciones mas complejas como el módulo (%), la division entera (//) y la potencia (**).
Operaciones Numéricas
Las operaciones numéricas son operaciones que solo se pueden realizar entre datos de tipo numérico, realizar la suma entre un numero y un string dará como resultado un error.
Suma (+):
La suma entre dos números:
Suma directamente sobre la función print()
:
print(5 + 3) # 8
La función
print()
mostrara el resultado de sumar 5 + 3
directamente en pantalla.Suma con variables a
y b
:
a = 5
b = 3
print(a + b) # 8
La función
print()
mostrara directamente el resultado de sumar el valor contenido en las variables a
y b
.Pasar una variable resultado
a print()
:
a = 5
b = 3
resultado = a + b
print(resultado) # 8
La variable
resultado
almacena el resultado ya operado entre a
y b
. Una vez el numero 8
es calculado y almacenado, print()
lo mostrara en pantalla.Resta (-):
La resta entre dos números:
Resta directamente sobre la función print()
:
print(5 - 3) # 2
La función
print()
mostrara el resultado de restar 5
-
3
directamente en pantalla.Resta negativa -
:
print(3 - 5) # -2
Si el numero que carga el signo
-
(5
) es mayor que el otro (3
) el resultado sera negativo (-2
). Esto puede ocasionar problemas si buscas hallar la diferencia entre dos variables.Resta con variables a
y b
:
a = 5
b = 3
print(a - b) # 2
a = 5
b = 3
print(b - a) # -2
a = 5
b = 3
print(a - a) # 0
La función
print()
mostrara directamente el resultado de restar los valores contenidos en las variables a
y b
.Pasar una variable resultado
a print()
:
a = 5
b = 3
resultado = a - b
print(resultado) # 2
a = 5
b = 3
resultado = b - a
print(resultado) # -2
a = 5
b = 3
resultado = a - a
print(resultado) # 0
La variable
resultado
almacena el resultado ya operado entre a
y b
. Una vez el numero es calculado y almacenado, print()
lo mostrara en pantalla.Multiplicación(*):
La multiplicación entre dos números:
Multiplicación directamente sobre la función print()
:
print(5 * 3) # 15
La función
print()
mostrara el resultado de multiplicar 5
*
3
directamente en pantalla.Multiplicación negativa:
print(5 * -3) # -15
La multiplicacion entre un numero positivo y uno negativo dara como resultado un numero negativo.
Multiplicación con variables a
y b
:
a = 5
b = 3
print(a * b) # 15
a = 5
b = -3
print(a * b) # -15
a = 5
b = 3
print(a * -b) # -15
La función
print()
mostrara directamente el resultado de multiplicar los valores contenidos en las variables a
y b
.Pasar una variable resultado
a print()
:
a = 5
b = 3
resultado = a * b
print(resultado) # 15
a = 5
b = -3
resultado = a * b
print(resultado) # -15
a = 5
b = 3
resultado = a * -b
print(resultado) # -15
La variable
resultado
almacena el resultado ya operado entre a
y b
. Una vez el numero es calculado y almacenado, print()
lo mostrara en pantalla.Division(/):
La division entre dos números:
Division directamente sobre la función print()
:
print(15 / 3) # 5.0
La función
print()
mostrara el resultado de dividir 15
/
3
directamente en pantalla.Division por 0
:
El cociente de una division consiste en hallar un numero que multiplicado el divisor nos entregue como resultado el dividendo.
print(15 / 0) # ZeroDivisionError: division by zero
Si todo numero multiplicado por
0
nos entrega como resultado 0
; se nos hace imposible encontrar un cociente que nos de como resultado el numero 15
. Python nos entregara el Error
: ZeroDivisionError: division by zero.Division con variables a
y b
:
a = 15
b = 3
print(a / b) # 5.0
a = 7
b = 3
print(a / b) # 2.3333333333333335
a = 15
b = 0
print(b / a) # 0
La función
print()
mostrara directamente el resultado de dividir los valores contenidos en las variables a
y b
.Pasar una variable resultado
a print()
:
a = 15
b = 3
resultado = a / b
print(resultado) # 5.0
a = 15
b = 3
resultado = a / a
print(resultado) # 1.0
a = 7
b = 3
resultado = b / a
print(resultado) # 0.42857142857142855
La variable
resultado
almacena el resultado ya operado entre a
y b
. Una vez el numero es calculado y almacenado, print()
lo mostrara en pantalla.Modulo(%):
Se utiliza para encontrar el residuo de la división.
Modulo directamente sobre la función print()
:
print(3 % 15) # 3
La función
print()
mostrara el residuo de dividir 3
/
15
directamente en pantalla.Modulo por 0
:
print(15 % 0) # ZeroDivisionError: division by zero
El módulo realiza una división para extraer el residuo. Por tanto, intentar extraer el residuo de una división por 0, retornara el
Error
: ZeroDivisionError: division by zero.Modulo con variables a
y b
:
a = 15
b = 3
print(a % b) # 0
a = 7
b = 3
print(a % b) # 1
a = 15
b = 0
print(b / a) # 0.0
La función
print()
mostrara directamente el residuo de dividir los valores contenidos en las variables a
y b
.Pasar una variable resultado
a print()
:
a = 15
b = 3
resultado = a % b
print(resultado) # 0
a = 15
b = 3
resultado = a % a
print(resultado) # 0
a = 7
b = 3
resultado = b % a
print(resultado) # 3
La variable
resultado
almacena el resultado ya operado entre a
y b
. Una vez el numero es calculado y almacenado, print()
lo mostrara en pantalla.Division Entera(//):
Realiza una division entera donde se omite completamente la parte decimal sin realizar ningún redondeo.
Division Entera directamente sobre la función print()
:
print(15 // 2) # 7
La función
print()
mostrara el resultado entero de dividir 15
//
2
directamente en pantalla.Division Entera por 0
:
print(15 // 0) # ZeroDivisionError: division by zero
En la división entera se aplican las mismas reglas que en la división regular. Por lo tanto, la división por 0, retornara el
Error
: ZeroDivisionError: division by zero.Division Entera con variables a
y b
:
a = 15
b = 3
print(a // b) # 15
a = 7
b = 3
print(a // b) # 2
a = 15
b = 0
print(a // b) # ZeroDivisionError: division by zero
La función
print()
mostrara directamente la division entera los valores contenidos en las variables a
y b
.Pasar una variable resultado
a print()
:
a = 15
b = 3
resultado = a // b
print(resultado) # 5
a = 15
b = 3
resultado = a // a
print(resultado) # 1
a = 15
b = 3
resultado = b // a
print(resultado) # 0
La variable
resultado
almacena el resultado ya operado entre a
y b
. Una vez el numero es calculado y almacenado, print()
lo mostrara en pantalla.Potencia(**):
Potencia directamente sobre la función print()
:
print(5 ** 3) # 125
La función
print()
mostrara el resultado de restar 5
*
3
directamente en pantalla.Potencia negativa:
Elevar un número a una potencia negativa implica calcular la inversa (o recíproca) de elevar el número a la potencia positiva correspondiente.
print(5 ** -3) # 0.008
Potencia con variables a
y b
:
a = 5
b = 3
print(a ** b) # 125
a = 5
b = -3
print(a ** b) # 0.008
a = 5
b = 3
print(-a ** b) # # -125
La función
print()
mostrara directamente el resultado de elevar el valor a
a el valor b
.Pasar una variable resultado
a print()
:
a = 5
b = 3
resultado = a ** b
print(resultado) # 125
a = 5
b = -3
resultado = a ** b
print(resultado) # 0.008
a = 5
b = 3
resultado = -a ** b
print(resultado) # -125
La variable
resultado
almacena el resultado ya operado entre a
y b
. Una vez el numero es calculado y almacenado, print()
lo mostrara en pantalla.Cadenas de Caracteres
Concatenación(+):
Dado que el texto se interpreta como una cadena de caracteres, la concatenación es la union de dos o mas cadenas, donde caracteres como el espacio también hacen parte de la cadena.
Concatenación de strings
+ strings
nombre = "David"
oracion = "Mi nombre es " + nombre
Sumar el string "Mi nombre es " con el contenido de la variable
nombre
("David"), nos dará como resultado el string
"Mi nombre es David".Concatenación de strings
+ Integers
edad = 28
oracion = "Tengo " + edad + " años de edad"
Sumar el string "Tengo " con el contenido de la variable
edad
(28), nos dará como resultado un Error
: TypeError: can only concatenate str (not "int") to str.Puedes solucionar este Error
usando la función str()
para convertir el valor de edad en un dato de tipo string
.
edad = 28
oracion = "Tengo " + str(edad) + " años de edad"
Convertir
edad
a un string
con str()
nos permite concadenar "28" a la oracion, dandonos como resultado string
: "Tengo 28 años de edad".Proceso de Asignación
En los ejemplos anteriores hacemos uso de las operaciones directamente dentro de la función
print()
. Sin embargo, ¿cómo podemos asignar el resultado de una operación a una variable?El proceso de asignación de una operación a una variable y su posterior visualización puede dividirse en tres pasos fundamentales:
- Evaluación:
Durante la evaluación, Python analiza el tipo de operación que se está realizando y calcula el resultado correspondiente.
- Asignación:
El resultado obtenido durante la evaluación se asigna finalmente a la variable correspondiente.
- Visualización:
Para mostrar el resultado en la pantalla, se utiliza la función
print()
junto con la variable asignada.
Entrada del usuario
La capacidad de permitir que un usuario ingrese datos en nuestro programa es fundamental para asignar valores a nuestras variables y trabajar en función de ellas.
Entrada (Input)
En Python, la forma más básica de entrada de datos es mediante la función
input()
. Esta función representa de manera excelente el esquema de entrada, proceso y salida en un programa.Entrada
Input es una función que toma como entrada un string. Esta entrada se mostrara en pantalla de igual manera que la función
print()
Proceso
- Cuando se llama a
input()
, el programa se detiene y espera a que el usuario ingrese una línea de texto.
- El usuario ingresa una línea de texto y presiona la tecla "
Enter
".
- La función
input()
lee la línea de texto ingresada y la devuelve como una cadena de caracteres.
Salida
- Puedes asignar el valor devuelto por
input()
a una variable para almacenar y utilizar la entrada del usuario en tu programa.
- Una vez asignado el valor a una variable podemos hacer uso de
print()
para mostrarla en pantalla.
Ejemplo
- Escribimos la función
input()
con el mensaje de entrada:“Por favor, ingresa tu nombre: ”
.
- Esto imprimirá el mensaje en pantalla, seguido de un espacio donde el usuario podrá escribir su nombre y luego presionar "Enter" para enviarlo.
- Al enviar el mensaje este es almacenado en la variable
resultado
.
- Finalmente Utilizamos la función
print()
para mostrar el contenido de la variableresultado
en pantalla, lo que nos permitirá visualizar el nombreJohn
.

Calculadora Básica
Ahora que hemos comprendido los conceptos fundamentales relacionados con las variables y las entradas de usuario, procedamos a crear una calculadora básica que sume dos números proporcionados por el usuario.
numero_a = input("Por favor, ingrese el primer número: ")
numero_b = input("Por favor, ingrese el segundo número: ")
print(numero_a + numero_b)
Este programa solicita al usuario ingresar dos números y utiliza la función
input
para capturarlos. Durante la ejecución, en el primer paso, se pide al usuario que ingrese el primer número y, una vez almacenado en la variable numero_a
, el programa procede a solicitar el segundo número para luego asignarlo a la variable numero_b
. Una vez que ambos números están almacenados en sus respectivas variables, la función print
mostrará la suma de estos en la pantalla.Supongamos que nuestras entradas consisten en los números
1
y 1
; nuestra salida esperada sería el número "2"
. Sin embargo, hay un problema fundamental en nuestro código cuando lo ejecutamos.# Salida
'11'
La razón por la cual nuestra salida muestra el número 11 es porque la función
input
toma lo que ingresamos como texto y lo almacena como una cadena de caracteres string
. Si utilizamos el operador de suma +
en dos cadenas de texto, estas se concatenarán, lo que resulta en que nuestros dos números se unan en un solo texto.Coerción de Tipos
La coerción de tipos, en resumen, se refiere a la capacidad de un lenguaje de programación para cambiar un tipo de dato a otro.
Entero (int)
La función
int()
se utiliza para convertir un valor en un número entero integer
. Puede aceptar varios tipos de valores y producir un entero como resultado.Entrada
La función
int()
puede aceptar varios tipos de datos como entrada, pero en este caso, utilizaremos números en formato de cadena (string
) como entrada.Proceso
La función
int()
toma el valor de entrada y tratara de convertirlo en un valor entero.Salida
- Si el string no representa un valor numérico válido, la función
int()
generará un error.
- Si el string representa un valor numérico válido, por ejemplo, "2023", la función
int()
nos devolverá el valor convertido en forma de número entero.
Ejemplo
- Escribimos la función
int()
con el string de entrada:“2023”
.
- Esto convertirá el valor de string a un integer lo que nos permitirá realizar operaciones aritméticas con un valor que inicialmente solo representaba texto.
- El numero es almacenado en la variable
resultado
.
- Finalmente Utilizamos la función
print()
para mostrar la suma entreresultado
y el numero1
, lo que nos permite visualizar el numero2024
.

Calculadora Básica Corregida
Ahora que tenemos una forma de convertir los datos de tipo string que nos proporciona la función
input
en datos numéricos mediante la función int
, podemos incorporar esta funcionalidad en nuestro programa.numero_a = input("Por favor, ingrese el primer número: ")
numero_b = input("Por favor, ingrese el segundo número: ")
print(numero_a + numero_b)
Al analizar nuestro código inicial, se destacan dos aspectos importantes:
- Después de que el usuario ha ingresado los datos, obtenemos dos variables,
numero_a
ynumero_b
, que contienen datos de tipo string.
- Es crucial asegurarnos de que
numero_a
ynumero_b
sean de tipo numérico antes de realizar la operación.
Solución 1
Podemos hacer uso de la reasignación de variables para reestablecer el valor de
numero_a
y numero_b
como valores de tipo entero.numero_a = input("Por favor, ingrese el primer número: ")
numero_b = input("Por favor, ingrese el segundo número: ")
numero_a = int(numero_a)
numero_b = int(numero_b)
print(numero_a + numero_b)
Solución 2
Una solución mas directa involucra dar a input como entrada a int.
numero_a = int(input("Por favor, ingrese el primer número: "))
numero_b = int(input("Por favor, ingrese el segundo número: "))
print(numero_a + numero_b)
Control de Flujo
Se refiere a la capacidad de un programa para tomar decisiones y permite que un programa "fluya" por diferentes caminos o ramas de ejecución según ciertas condiciones o reglas predefinidas.
Declaraciones Condicionales
Las declaraciones condicionales nos permiten determinar el flujo de ejecución de nuestro programa, dividiéndolo en ramificaciones según nuestras decisiones.
Estas decisiones se basan en condiciones lógicas, que son afirmaciones que pueden ser
verdaderas
o falsas
.Declaración "if"
La declaración
if
se puede entender como la expresión si
en español. Es un condicional que permite que el código continúe su ejecución si se cumple una condición específica.if condición:
# Bloque de código que se ejecuta si la condición es verdadera
Ejemplo:
edad = 20
if edad >= 18:
print("Eres mayor de edad.")
- Iniciamos declarando una variable llamada
edad
con un valor de20
.
- Luego, utilizamos la declaración
if
seguida de una condición.
- La condición verifica si la variable
edad
es mayor o igual a18
usando el operador>=
.
- Si la condición es
Verdadera
, el programa imprimirá en pantalla el mensajeEres mayor de edad.
- Caso contrario, si la condición es
Falsa
, Python omitirá esa línea y la ejecución continuará sin mostrar ningún mensaje en pantalla.
Análisis:
Al analizar el código, podemos identificar varios puntos clave:
- Condición:
Nuestra condición implica la comparación de dos valores numéricos,
20
y 18
, utilizando el operador de comparación >=
. Dado que la
edad
es un número mayor o igual a 18
, esta condición se evaluará como un valor booleano True
.- Sintaxis:
- Para indicar el inicio de una rama o bloque de código, Python interpreta el uso de los dos puntos
:
como el inicio de una ramificación. - Después de que el bloque es declarado con los 2 puntos, debemos hacer uso de la indentación para escribir el código de esta ramificación. Escribir código sin esta indotación dará a entender a python que ese código hace parte de la rama principal o el flujo principal del programa.
Para comunicar claramente a Python que deseamos iniciar un bloque de código, es fundamental prestar atención a otros dos puntos clave para asegurar una ejecución sin errores:
- Operadores de comparación:
- Igualdad (==)
- Desigualdad (!=)
- Mayor que (>)
- Menor que (<)
- Mayor o igual que (>=)
- Menor o igual que (<=)
A diferencia de los operadores aritméticos, los operadores de comparación buscan comparar dos valores de cualquier tipo y devolver un valor booleano, ya sea
True
o False
.Lista de los operadores de comparación
- Activación del condicional (if):
Es importante notar que todo lo que
if
realmente necesita para ejecutar un bloque de código, es un valor booleano True
. Escribir directamente True
como condición es completamente válido y hará que ese bloque de cogido siempre se ejecute.
if True:
print("Ese codigo siempre se ejecuta!")
Declaración "else"
La declaración
else
se puede entender como la expresión si no
. Este condicional nos permite la ejecución de una ramificación “Por defecto”. Si la condición if no resulta ser verdadera el código pasara a ejecutar el código else sin verificar ningún tipo de condición siendo este el código por defecto que se ejecutara si nuestra condición anterior resulta no ser verdaderaif condición:
# Código
else:
# Código
Ejemplo:
edad = 17
if edad >= 18:
print("Eres mayor de edad.")
else:
print("Eres menor de edad.")
- La condición verifica si la variable
edad
es mayor o igual a18
usando el operador>=
.
- Si la condición es
Verdadera
, el programa imprimirá en pantalla el mensajeEres mayor de edad.
- Caso contrario, si la condición es
Falsa
, Python dará la ejecución a la declaraciónelse
y el programa imprimirá el mensajeEres menor de edad.
Declaración "elif"
La declaración
elif
se puede entender como la expresión si no si
, Este condicional nos permite añadir condiciones extra a nuestro arbol lógico. en el ejemplo anterior interpretamos a todos los números sobre 18 como mayores de edad y a todos los demás números fuera de ese rango como menores de edad.Ejemplo:
edad = 18
if edad > 18:
print("Eres mayor de edad.")
elif edad == 18:
print("Tu edad es exactamente 18 años.")
else:
print("Eres menor de edad.")
- Ahora la condición verifica únicamente si la variable
edad
es mayor a18
usando el operador>
.
- Si la condición es
Verdadera
, el programa imprimirá en pantalla el mensajeEres mayor de edad.
- Caso contrario, si la condición es
Falsa
, Python dará la ejecución a la declaraciónelif
y la condición ahora verificara si la variableedad
es igual a18
usando el operador==
.
- Si la condición es
Verdadera
, el programa imprimirá en pantalla el mensajeTu edad es exactamente 18 años
- Caso contrario, si la condición es
Falsa
, Python dará la ejecución a la declaraciónelse
y el programa imprimirá el mensajeEres menor de edad.
Operadores lógicos
Los operadores lógicos se utilizan para combinar expresiones lógicas y evaluarlas.
Al continuar con nuestro código anterior, podemos identificar un problema en los rangos de edad.
Según nuestro programa, ser mayor de edad involucra un rango de números mayores a
18
, usuarios pueden ingresar números enormes siendo estos interpretados por el programa como mayores de edad. El problema se agrava aún más, ya que un usuario puede ingresar números negativos, y la lógica consideraría cualquier número menor de 18
como menor de edad.Es en este punto donde los operadores lógicos pueden ayudarnos a establecer un rango más realista.
edad = 0
if edad > 18 and edad < 200:
print("Eres mayor de edad.")
elif edad == 18:
("Tu edad es exactamente 18 años.")
elif edad > 0 and edad < 18:
("Eres menor de edad.")
else:
("La edad ingresada no es valida.")
Análisis:
En esta version modificada del código añadimos el operador lógico
and
cuya contraparte en el español puede igualarse a y
.- En la primera declaración de nuestro código, podemos apreciar dos condiciones unidas por el operador
and
. Este operador se encarga de asegurarse de que ambas condiciones sean evaluadas como verdaderas. Si una de las dos condiciones resulta ser falsa, el operador retornará el valor booleanoFalse
, omitiendo la ejecución de nuestra declaración.
Esta declaración ahora maneja un rango entre los
19
y los 199
, lo cual es mucho más realista.- La segunda declaración se mantiene igual, verificando si el usuario ingreso exactamente el valor
18
.
- Modificamos la declaración
else
par convertirla en unelif
, ahora maneja un rango entre los1
y los17
para determinar si la edad corresponde a un menor de edad.
- Finalmente, recuperamos la declaración else para manejar todas las edades fuera de nuestro rango, utilizando else imprimiendo el mensaje correspondiente.
Calculadora con Selección Múltiple
Ahora que tenemos la capacidad de tomar decisiones dentro de nuestro programa, incorporémoslo en nuestra calculadora.
print("Suma: 1, Resta: 2, Multiplicacion: 3, Division: 4, Potencia: 5")
operacion = input("Selecciona la operacion que deseas realizar: ")
numero_a = int(input("Por favor, ingrese el primer número: "))
numero_b = int(input("Por favor, ingrese el segundo número: "))
if operacion == "1":
resultado = numero_a + numero_b
elif operacion == "2":
resultado = numero_a - numero_b
elif operacion == "3":
resultado = numero_a * numero_b
elif operacion == "4":
resultado = numero_a / numero_b
elif operacion == "5":
resultado = numero_a ** numero_b
else:
resultado = "El tipo de operacion seleccionado no es valido"
print(resultado)
Análisis:
- Comenzamos proporcionando al usuario una lista de operaciones
Suma: 1, Resta: 2, Multiplicación: 3, División: 4, Potencia: 5
- Ahora utilizamos la función
input
para solicitar al usuario que elija una operación y almacenamos su respuesta en la variableoperacion
.
- Solicitamos al usuario que ingrese dos números, el resultado de cada
input
es entregado a la funciónint
para convertirlos en un números que puedan ser operados en cálculos.
- A continuación, comparamos el valor almacenado en
operacion
con los números asignados a cada operación. Si el valor coincide con uno de los números (por ejemplo,"1"
), realizaremos la suma entrenumero_a
ynumero_b
asignando el resultado a la variableresultado
.
- Si
operacion
no coincide con ninguna de las opciones, Python dará la ejecución a la declaraciónelse
y el programa asignara el texto"El tipo de operacion seleccionado no es valido”
a la variableresultado
.
- Finalmente nuestra calculadora imprimirá en pantalla el contenido de
resultado
.
Grupos de Datos
Las entradas de los programas no se limitan usualmente a solo un dato. A la hora de procesar información, esta información se nos puede entregar grupos de datos.
Listas
Las listas son secuencias de elementos que pueden ser de diferentes tipos. Se definen utilizando corchetes
[]
:lista = [1, 2.0, "Hola", True, False]
Cada elemento de una lista tiene un numero que lo identifica, este numero es el índice del elemento. Estos indices comienzan a partir del 0 y aumentan en una unidad por cada elemento en la lista.

Acceder a los elementos de una lista
Para obtener un elemento específico, utiliza el índice correspondiente dentro de corchetes
[]
.lista = [1, 2.0, "Hola", True, False]
print(lista[2]) # Hola!
Asegúrate de separar cada elemento de la lista con una coma.
Diccionarios
Los diccionarios son colecciones de pares
"llave"
:
valor
que permiten asociar valores con sus respectivas etiquetas. Se definen utilizando llaves {}
:persona = {
"nombre": "Juan",
"edad": 30,
"ciudad": "Barrrancabermeja"
}
Es importante notar que cada par
"llave"
:
valor
, al igual que las listas, debe estar separado por comas.Acceder a los elementos de un diccionario
Para obtener un elemento específico, puedes utilizar el nombre de la etiqueta correspondiente dentro de corchetes
[]
.persona = {
"nombre": "Juan",
"edad": 30,
"ciudad": "Barrrancabermeja"
}
print(persona["edad"]) # 30
Las llaves de los diccionarios deben escribirse con comillas dobles
"
o comillas simples '
, de forma similar a los strings
. Los valores que corresponden a cada llave pueden ser de cualquier tipo de dato, incluyendo otras listas o diccionarios.Ejemplos:
Los diccionarios son herramientas excepcionales para definir estructuras de datos en un formato que resulta comprensible tanto para las personas como para lenguajes de programación.
producto = {
"nombre": "Smartphone",
"precio": 499.99,
"disponible": True
}
En este ejemplo, se muestra una descripción de un
producto
escrita en un formato diccionario. Cada clave del producto tiene un valor correspondiente: por ejemplo, podemos observar que la clave 'nombre'
contiene un valor de tipo string
, la clave 'precio'
un valor de tipo número float
, y la clave 'disponible'
un valor de tipo boolean
.estudiante = {
"nombre": "Ana",
"edad": 20,
"identificacion": "A12345",
"cursos": ["Matemáticas", "Historia", "Inglés"],
"calificaciones": {"Matemáticas": 90, "Historia": 85, "Inglés": 95}
}
En este diccionario ahora podemos ver una estructura de datos mas compleja. cada
estudiante
tiene una serie de cursos a los que asistir. Por lo tanto, es razonable asignar una lista
como valor a la clave "cursos"
. De igual manera, el estudiante tiene un conjunto de calificaciones, pero estas calificaciones corresponden a materias específicas. Por tanto, la decisión de asignar un diccionario
a la clave "calificaciones"
tiene sentido dentro de este contexto, ya que nos permite asignar un valor a cada materia.Al igual que las listas, cada par
"llave"
:
valor
, se pueden escribir en una sucesión: "calificaciones": {
"Matemáticas"
:
90
,
"Historia"
85
"Inglés"
95
}
Automatización
La automatización se fundamenta en la capacidad de identificar tareas que se tornan repetitivas o rutinarias.
Ciclo for
El ciclo
for
se utiliza para recorrer una secuencia y ejecutar un bloque de código una vez por cada elemento en esa secuencia. for elemento in secuencia:
# Bloque de código que se ejecuta para cada elemento
Las secuencias involucran datos como
listas
, strings
o diccionarios
, y el elemento
puede interpretarse como una variable que va cambiando su valor por cada dato en nuestra secuencia
.La sintaxis de un ciclo
for
puede interpretarse de la siguiente manera: Por cada
elemento
en
mi secuencia
:
Realiza una acción.
Ejemplo: Siguiendo la sintaxis de
numeros = [1, 2, 3, 4, 5]
for numero in numeros:
print(numero)
- Asignamos una lista de números a la variable
numeros
.
- Iniciamos el ciclo utilizando la palabra reservada
for
y damos el nombrenumero
a la variable en la que se almacenará cada número.
- A continuación de
numero
, utilizamos la palabra reservadain
para indicar quenumero
es un elemento contenido ennumeros
.
- Utilizamos los dos puntos
:
y en este caso, 4 espacios para iniciar un bloque de código. Este bloque de código se ejecutará por cada elemento en nuestra lista.
- Finalmente, utilizamos
print
para mostrarnumero
por cada elemento.
numero
es el nombre asignado a cada elemento en nuestra lista numeros
. Es importante notar que durante un bucle, el elemento se nombra en singular, mientras que la variable que almacena nuestra secuencia se nombra en plural.Siguiendo la sintaxis de for
podemos leer este ciclo como:
por_cada numero en mi_lista_de_numeros:
imprime(el_numero_actual)
# Lista de compras
lista_de_compras = ["manzanas", "bananas", "leche", "pan", "yogur", "huevos"]
# Artículo que estamos buscando
articulo_a_buscar = "pan"
# Bucle para buscar el artículo en la lista
for elemento in lista_de_compras:
if elemento == articulo_a_buscar:
print(f"Encontraste el {articulo_a_buscar} en la lista.")
break # Detén la búsqueda si encontraste el artículo
else:
print(f"No es el {articulo_a_buscar}, continuemos buscando.")
continue # Continúa buscando otros elementos en la lista
print("Fin de la búsqueda.")
Bucle while
El bucle
while
se utiliza para ejecutar un bloque de código repetidamente mientras una condición sea verdadera. La estructura básica de un bucle en Python es la siguiente:while condicion:
# Bloque de código que se ejecuta mientras la condición sea verdadera
El bloque de código dentro del bucle
while
se ejecuta repetidamente mientras la condicion
sea True
. Si la condición se vuelve False
, el bucle se detiene y la ejecución continúa después del bucle.Ejemplo:
contador = 0
while contador < 5:
print(contador)
contador += 1
Este bucle
while
imprimirá los números del 0 al 4.Manejo de errores
El manejo de errores es crucial en cualquier programa para mantener su flujo y evitar interrupciones inesperadas. En Python, los errores se manejan mediante excepciones, permitiendo que el código responda de manera adecuada a situaciones imprevistas.
¿Por qué manejar errores?
El manejo de errores es esencial para mantener la integridad y la ejecución de una aplicación.
- Evitar la interrupción del programa: Los errores no controlados pueden detener por completo la ejecución de un programa, lo que resulta en una experiencia frustrante.
- Prevenir comportamientos inesperados: Al manejar los errores de manera adecuada, podemos controlar cómo reacciona el programa ante situaciones inesperadas.
- Proporcionar retroalimentación al usuario: Al manejar errores, podemos informar al usuario sobre lo que salió mal y cómo pueden corregirlo, mejorando la experiencia del usuario.
El bloque try-except
El bloque
try-except
es una estructura fundamental en Python que se utiliza para gestionar errores durante la ejecución de un programa.try:
# Código que puede generar un error
# ...
except ExceptionType as error:
# Código para manejar el error
- Dentro del bloque
try
, colocamos el código que puede potencialmente generar un error. Esto puede ser cualquier operación que podría causar un problema, como la división entre cero o el acceso a un índice fuera de rango en una lista.
- Si ocurre algún error durante la ejecución del código dentro del bloque
try
, en lugar de que el programa se detenga, Python salta inmediatamente al bloqueexcept
. Aquí es donde podemos manejar el error de manera controlada.
En la sección except
, especificamos el tipo de error que queremos manejar.
Por ejemplo, podríamos tener un bloque
except
como este: try:
result = 8 / 0
except ZeroDivisionError as error:
print("Error: Division by zero is not allowed.")
print("Error details:", error)
Aquí,
error
contendrá información específica sobre la excepción ZeroDivisionError
.Tipos de errores mas comunes.
Funciones
Función | Excepción | Descripción |
int() | ValueError | Se levanta cuando la conversión falla, por ejemplo, al pasar un string con caracteres no numéricos. |
float() | ValueError | Se levanta cuando la conversión falla, por ejemplo, al pasar un string con caracteres no numéricos. |
str() | TypeError | Se levanta cuando se intenta convertir un objeto no convertible a cadena. Generalmente no lanza excepciones, ya que la mayoría de los objetos pueden ser convertidos a string. |
list() | TypeError | Se levanta cuando se intenta convertir un objeto no iterable a lista. Al igual que srt() , no suele lanzar excepciones, ya que puede crear una lista a partir de cualquier iterable. |
dict() | ValueError | Se levanta cuando se proporcionan cantidades desiguales de claves y valores. |
print() | OSError TypeError | OSError : Puede ocurrir si hay un problema al escribir en la salida estándar.
TypeError : Se levanta cuando se pasa un argumento que no pueda ser convertido a string.
Al igual que srt() , no suele lanzar excepciones, ya que print depende de que el objeto pueda ser transformado a string, proceso que print realiza automáticamente. |
input() | KeyboardInterrupt | Se levanta si el usuario interrumpe la ejecución con Ctrl+C mientras la función input() espera la entrada. |
- Cuando no conocemos el tipo exacto de excepción que podría ocurrir o si queremos manejar cualquier tipo de excepción de manera general, podemos utilizar
Exception
comoExceptionType
. Esto capturará cualquier tipo de excepción y la almacenará en la variableerror
:
try:
# Código que puede generar un error
# ...
except Exception as error:
# Código para manejar el error general
- Por otro lado, si prefieres no mostrar mensajes técnicos durante la ejecución de la aplicación, puedes optar por ignorar completamente el tipo de excepción y simplemente manejar cualquier error de manera general:
try:
# Código que puede generar un error
# ...
except:
# Código para manejar el error
Ejemplos
El siguiente código tiene como objetivo convertir un valor ingresado por un usuario a un valor de tipo entero:
try:
numero = int(input("Ingrese un número entero: "))
print("El número ingresado es:", numero)
except Exception as error:
print("Error:", error)
print("Por favor, ingrese un número entero válido.")
Análisis:
- Dentro del bloque
try
, se solicita al usuario que ingrese un número entero utilizando la funcióninput()
, y se intenta convertir esta entrada a un entero utilizando la funciónint()
.
- Si el usuario ingresa un valor que no puede ser convertido a un entero, se genera una excepción. En este caso, se captura la excepción utilizando el bloque
except
:
- Dentro del bloque
except
, se captura la excepciónException
y se almacena en la variableerror
. Luego, se imprime un mensaje de error que indica al usuario que ha ocurrido un problema y se le pide que ingrese un número entero válido.
Se imprime el mensaje específico asociado con la excepción Exception
, proporcionando información adicional sobre el tipo de error que ocurrió.
Error durante ejecución
Ingrese un número entero: Gato
Error: invalid literal for int() with base 10: 'Gato'
Por favor, ingrese un número entero válido.
- Durante la ejecución se ingresa el string
"Gato"
como valor de entrada a la funciónint()
. Levantando La excepciónValueError
, y se muestra nuestro mensaje de error solicitando un numero valido.
Si deseamos simplificar el manejo de errores y no necesitamos almacenar información específica sobre la excepción, podemos eliminar la variable error
y utilizar simplemente el bloque except
sin especificar el tipo de excepción:
try:
numero = int(input("Ingrese un número entero: "))
print("El número ingresado es:", numero)
except:
print("Por favor, ingrese un número entero válido.")
Error durante ejecución
Ingrese un número entero: Gato
Por favor, ingrese un número entero válido.
Es importante comprender que la función int()
puede convertir diferentes tipos de strings en números enteros, dependiendo de la base numérica especificada.
Por ejemplo:
En el sistema decimal, puede interpretar números como
"123"
, mientras que en el sistema binario, puede interpretar "1011"
como el número entero correspondiente. La capacidad de la función int()
para interpretar diferentes tipos de strings se basa en el sistema numérico especificado.- Si el usuario ingresa un string que pueda ser procesado por
int()
, se almacenara el numero en la variable numero y se continuara con la ejecución del programa.
Modularización
Funciones
# Leer dos números enteros de dos dígitos y determinar a cuánto es igual la suma de todos los dígitos.
def has_two_digits(number:int) -> bool:
string_number = str(number)
if len(string_number) == 2:
return True
else:
return False
def sum_of_digits(number_a:int, number_b:int) -> str:
string_number_a = str(number_a)
string_number_b = str(number_b)
if has_two_digits(number_a) and has_two_digits(number_b):
digits = string_number_a + string_number_b
total_sum = 0
for digit in digits:
total_sum += int(digit)
return "La suma de todos los digitos es: " + str(total_sum)
else:
return "Los numeros ingresados no tienen 2 digitos"
print(sum_of_digits(99,99))
📘 Table of Contents
Introducción a la programaciónHello World!VariablesDeclaración de variablesNombres de variablesNombres SimbólicosSecuencia de ejecuciónReasignación de variablesTipos de datosCadenas de Texto (Strings)Números Enteros (Integers)Números Decimales (Floats)Valores Lógicos (Booleanos)OperadoresOperadores aritméticosOperaciones NuméricasCadenas de CaracteresProceso de AsignaciónEntrada del usuarioEntrada (Input)EntradaProcesoSalidaCalculadora BásicaCoerción de TiposEntero (int)EntradaProcesoSalidaCalculadora Básica CorregidaControl de FlujoDeclaraciones CondicionalesDeclaración "if"Declaración "else"Declaración "elif"Operadores lógicosCalculadora con Selección MúltipleGrupos de DatosListasAcceder a los elementos de una listaDiccionariosAcceder a los elementos de un diccionarioAutomatizaciónCiclo forBucle whileManejo de errores¿Por qué manejar errores?El bloque try-exceptModularizaciónFunciones