Guia Python DOBLE POR PAG
Guia Python DOBLE POR PAG
I n s t a l a c i ó n d e Py t h o n
Necesitamos instalar el intérprete Python desde su
página oficial.
Ingresamos a Downloads y hacemos clic en el botón
Download Python.
Asegúrate de descargar la última versión (o como mínimo
la versión 3.8.x).
Pá g i n a o f i c i a l d e Py t h o n
I n s t a l a c i ó n d e Py t h o n
Procedemos con la instalación realizando los pasos
típicos para instalar aplicaciones en nuestro Sistema
Operativo.
I n s t a l a c i ó n d e V SCo d e
Para escribir código utilizaremos un editor de texto
llamado Visual Studio Code.
Lo descargamos desde su página oficial, y seguimos los
pasos necesarios para su instalación, asegurándonos de
crear un ícono de acceso en el escritorio o menú de
nuestra computadora.
P á g in a o fic ia l d e VS C o d e
Ex t e n s i o n e s p a r a V SCo d e
Una extensión es un módulo de software que agrega
funcionalidades adicionales. Instalaremos dos:
¡Hola, Mundo!
H OL A M U N DO
Escribir un programa que muestre el texto "H Hola
Mundo" es una tradición en la programación y se trata
de uno de los programas más simples que pueden
escribir en cualquier lenguaje de programación.
Comenzaremos a aprender un Python respetando esta
tradición: escribiremos nuestro propio programa
capaz de imprimir o mostrar en la pantalla el mensaje
"Hola Mundo".
H OL A M U N DO
Primero, creamos un nuevo archivo llamado “hola.py”
en el explorador de VSCode, utilizando la herramienta
que vemos en la imágen de la izquierda, o el menú de
opciones “Archivo”.
Variables
V a r i a b l e s e n Py t h o n
En programación, una variable es como una "caja" en la memoria de tu computadora donde puedes guardar datos
temporales que tu programa puede usar y modificar mientras se ejecuta. Piensa en una variable como en un contenedor
que tiene una etiqueta con un nombre único; esta etiqueta te permite acceder al contenido de la caja o cambiarlo.
and, as, assert, break, class, continue, def, del, elif,else, except, False,
finally, for, from, global, if, import, in, is, lambda, None, nonlocal, not, or,
pass, raise, return, True, try, yield, while, with
Co n v e n c i o n e s d e n o m b r e s
Algunos nombres de variables válidos y recomendados:
su m a total im p _fin a l _s a ld o a re a 12
m i s a ld o 2p e s o s fo r 21%IVA $ a _p a g a r
print()
L a f u n c i ó n p r i n t ()
La función print() permite mostrar datos en la terminal. Recibe entre paréntesis lo que se conoce como parámetros, que
pueden ser variables y/o literales, separados por comas. Las cadenas pueden delimitarse con comillas simples o dobles.
Luego de imprimir, print() realiza un salto de línea (pasa a la línea siguiente). Si se usa print() sin argumentos, sólo se
muestra la línea en blanco:
L a f u n c i ó n p r i n t ()
En este ejemplo, además de la creación y asignación de valores a variables y el uso de algunos operadores, vemos como
utilizar print() para mostrar literales y valores de variables en la terminal:
L a f u n c i ó n p r i n t (): \n
\n (nueva línea) representa un carácter especial que se utiliza para insertar una nueva línea en una cadena de texto.
Cuando escribimos \n dentro de una cadena y la imprimimos, el texto que le sigue se coloca en una nueva línea:
print("Escribimos\nen\nvarias\nlíneas.")
El comportamiento exacto de \t depende de la longitud de las cadenas que lo rodean. La tabulación agrega un número fijo
de espacios, y si las cadenas son más largas o más cortas de lo esperado, la alineación puede verse afectada.
T I POS DE DA T OS.
bool (lógicos )
¡Vamos a la práctica!
Ej e r c i c i o s Pr á c t i c o s
Optativos | No entregables
Lis t a d e la c o m p r a In g r e s o p r o m e d io
Usando la instrucción print() y lo visto en la clase, escribir Escribir un programa que guarde en variables el monto
un programa que muestre en la terminal la lista de del ingreso de cada uno de los primeros 6 meses del
productos que necesitamos comprar en el supermercado. año.
Luego, calcular y guardar en otra variable el promedio
Tips: de esos valores.
Ɣ Podés usar tabuladores para ordenar la lista. Por último, mostrar una leyenda que diga “El ingreso
Ɣ Recordá que si necesitas una línea en blanco, promedio en el semestre es de xxxxx” donde “xxxxx” es
puedes usar “print()”. el valor calculado.
¡N U EV O CU EST I ON A RI O EN
CA M PU S!
Pero antes…
cadena = "1234"
entero = 45
flotante = 56.2
Ob t e n c i ó n d e l t i p o d e d a t o
Se puede conocer el tipo de dato de cualquier objeto utilizando la función type():
Op e r a d o r d e a s i g n a c i ó n
El operador de asignación = (igual) es muy importante en Python. Su función es diferente a la que habitualmente le damos
en otros contextos, como la matemática.
Se lo denomina “operador de asignación” y permite asignar un valor a una variable. Su función consiste en evaluar
(resolver) la expresión que se encuentra a su derecha, y asignar el resultado a la variable de la izquierda.
Una sentencia o declaración define una acción. Puede contener alguna(s) expresiones. Son las instrucciones que
componen el código de un programa y determinan su comportamiento. Finalizan con un Enter.
Op e r a d o r e s a r i t m é t i c o s
Realizan las operaciones aritméticas comunes. Requieren uno o dos operandos (operadores unarios o binarios). Se aplican
las reglas de precedencia propias del álgebra:
Operador Descripción Ejemplo
suma = 12 + 5
+ Suma: Suma dos operandos. print(suma) # 17
resta = 23 - 4
Resta: Resta al operando de la izquierda el valor del operando de la print(resta) # 19
- numero = -32
derecha. Utilizado sobre un único operando, le cambia el signo.
print(numero) # -32
multiplicacion = 5 * 8
* Multiplicación: Producto de dos operandos. print(multiplicacion) # 40
Op e r a d o r e s a r i t m é t i c o s
Operador Descripción Ejemplo
division = 8 / 2
División: Divide el operando de la izquierda por el de la derecha print(division) # 4.0
/
(el resultado siempre es un float). division2 = 14 / 5
print(division2) # 2.8
Op e r a d o r e s a r i t m é t i c o s
Operador Descripción Ejemplo
potencia = 2 ** 3
Potencia: El resultado es el operando de la izquierda elevado a potencia2 = 10 ** 2
** print(potencia) # 8
la potencia del operando de la derecha.
print(potencia2) # 100
raiz = 9 ** 0.5
Para la raíz cuadrada Python no tiene operador aritmético en particular, pero print(raiz) # 3.0
raiz = 9 ** (1/2)
podemos utilizar ** con un exponente de 0.5 (para raíz cuadrada) o fracción print(raiz) # 3.0
(para raíz cuadrada u otras raíces). raiz = 125 ** (1/3)
print(raiz) # 5.0
Función input()
L a f u n c i ó n i n p u t ()
La función input() proporciona un mecanismo para que el usuario introduzca datos en nuestro programa. Muestra el cursor
en la terminal, lee lo que se escribe, y cuando se presiona Enter, este contenido, en formato de cadena de caracteres, se
puede asignar a una variable.
La cadena ingresada en el input() se convierte en un número de coma flotante, se almacena en “numero”, se guarda en
“resultado” su producto con 2, y se muestra en la terminal usando print().
EN T RA DA , PROCESO, SA L I DA
Ya tenemos los elementos necesarios para escribir
programas en Python que puedan cumplir las tres etapas
que requiere un algoritmo: ingreso de datos, procesamiento
y salida.
Esto es posible utilizando input() para realizar la petición
de datos al usuario, variables y operadores aritméticos
para realizar el procesamiento de esos datos, y finalmente
la función print() para proporcionar los datos de salida al
usuario.
Su m a d e d o s n ú m e r o s
Explicación del programa:
Ɣ Ingreso de datos: El programa solicita al usuario que ingrese dos números. Los valores ingresados se almacenan
en las variables llamadas “numero1” y “numero2”.
Ɣ Proceso: El programa realiza la suma de los dos números utilizando el operador + y guarda el resultado en la
variable llamada “suma”.
Ɣ Salida de datos: Finalmente, el programa muestra el resultado de la suma utilizando print() con el formato necesario
para que claro y fácil de entender.
Pr o m e d i o d e t r e s n o t a s
Aquí vemos un ejemplo un poco más complejo que realiza el cálculo del promedio de tres notas:
Pr o m e d i o d e t r e s n o t a s
Explicación del programa:
Ɣ Ingreso de datos: El programa solicita al usuario que ingrese tres notas, que se almacenan en las variables “nota1”,
“nota2”, y “nota3”.
Ɣ Proceso: Se calcula el promedio de las tres notas sumando los valores y dividiendo por 3. El resultado se guarda en
la variable “promedio”.
Ɣ Salida de datos: El promedio calculado se muestra en la terminal.
¡Vamos a la práctica!
Ej e r c i c i o s Pr á c t i c o s
Optativos | No entregables
Op e r a c i o n e s b á s i c a s C a lc u la d o r a d e p r o p in a s
1. Crea un programa que solicite al usuario dos Escribe un programa en Python que calcule la propina
números enteros. que se debe dejar en un restaurante.
2. Realiza las siguientes operaciones: suma, resta,
multiplicación, y módulo. El script debe solicitar al usuario el monto total de la
3. Muestra el resultado de cada operación en un cuenta y el porcentaje de propina que desea dejar.
formato claro y amigable.
Asegúrate de incluir mensajes personalizados que Utilizando operadores aritméticos, calcula la cantidad
expliquen cada resultado, por ejemplo: "La suma de tus de propina y el total a pagar (incluyendo la propina).
números es: X". Finalmente, muestra los resultados en la pantalla.
Iniciación con Python
Cla s e 04 - “Ruta de a va nce ”
Pero antes…
PFI
El Proyecto Final Integrador (PFI) consiste en el desarrollo
de una aplicación Python, que utilizando la terminal o consola
permita al usuario gestionar el inventario de una pequeña
tienda o comercio.
Menú de opciones
Menú de opc iones
Uno de los sistemas más populares utilizados para permitir al usuario
seleccionar qué función del programa necesita utilizar en un momento dado
es el llamado “Menú de opciones”.
Cómo se vé en la imagen, consiste en una lista de las opciones disponibles y
un mecanismo para pedir al usuario que selecciona una.
Proceso de datos
EN T RA DA , PROCESO, SA L I DA
Hemos visto que un algoritmo tiene tres partes principales:
entrada, proceso y salida.
El programa que escribiremos como TFI tendrá
mecanismos para que el usuario proporcione datos
(entrada), bloques en los que se realizarán búsquedas u
operaciones con esos datos (proceso) y también bloques
de código que mostrarán listados o resultados (salida).
Veremos a continuación algunos ejemplos de programas
sencillos, que podemos escribir con las instrucciones y
operadores que hemos visto hasta ahora, pero que tienen
las tres partes mencionadas.
Pr e c i o t o t a l c o n I V A
Este programa calcula el precio total de un producto incluyendo el IVA (Impuesto al Valor Agregado).
Entrada de datos:
Ɣ El programa primero solicita al usuario que ingrese el precio del producto utilizando la función input(). Este valor se
convierte a un número decimal (tipo float) y se guarda en la variable precio.
Ɣ Luego, solicita el porcentaje de IVA que se desea aplicar al producto, también utilizando input(). Este valor se
convierte a un número decimal (tipo float) y se guarda en la variable iva.
Ex p l i c a c i ó n d e l c ó d i g o
Cálculo del IVA y del precio total
Ɣ El programa calcula el monto del IVA multiplicando el precio del producto (precio) por el porcentaje de IVA (iva), y
luego divide ese resultado por 100 para obtener el valor del IVA en unidades monetarias. Este valor se almacena en
la variable monto_iva.
Ɣ A continuación, el programa suma el precio del producto (precio) y el monto del IVA (monto_iva) para obtener el
precio total del producto, incluyendo el IVA. Este valor se almacena en la variable precio_total.
Ex p l i c a c i ó n d e l c ó d i g o
Salida de datos
Ɣ Finalmente, el programa muestra el precio total del producto con IVA incluido utilizando la función print().
Cá l c u l o d e l d e s c u e n t o
Este programa calcula el precio final de un producto después de aplicar un descuento:
# Entrada: Solicitar el precio del producto y el porcentaje de descuento
precio = float(input("Precio del producto: "))
descuento = float(input("Porcentaje de descuento (por ejemplo, 10 para 10%): "))
Entrada de datos:
Ɣ El programa solicita al usuario que ingrese el precio del producto utilizando la función input(). Este valor se convierte
a un número decimal (tipo float) y se guarda en la variable precio.
Ɣ Luego, solicita el porcentaje de descuento que se desea aplicar al producto, también utilizando input(). Este valor se
convierte a un número decimal (tipo float) y se guarda en la variable descuento.
Ex p l i c a c i ó n d e l c ó d i g o
Cálculo del descuento y del precio final:
Ɣ El programa calcula el monto del descuento multiplicando el precio del producto (precio) por el porcentaje de
descuento (descuento), y luego divide ese resultado por 100 para obtener el valor del descuento en unidades
monetarias. Este valor se almacena en la variable monto_descuento.
Ɣ A continuación, el programa resta el monto del descuento (monto_descuento) del precio original del producto
(precio) para obtener el precio final del producto después de aplicar el descuento. Este valor se almacena en la
variable precio_final.
Ex p l i c a c i ó n d e l c ó d i g o
Salida de datos:
Ɣ Para finalizar, el programa muestra el precio final del producto con el descuento aplicado utilizando la función print().
Co m p r a c o n v a r i o s a r t íc u l o s
Este programa calcula el costo total de varios artículos comprados, basándose en el precio unitario y la cantidad comprada:
Entrada de datos:
Ɣ El programa solicita al usuario que ingrese el precio unitario del artículo utilizando la función input(). Este valor se
convierte a un número decimal (tipo float) y se guarda en la variable precio_unitario.
Ɣ Luego, solicita la cantidad de artículos que se van a comprar, utilizando nuevamente input(). Este valor se convierte
a un número entero (tipo int) y se guarda en la variable cantidad.
Ex p l i c a c i ó n d e l c ó d i g o
Cálculo del costo total:
Ɣ El programa calcula el costo total de la compra
multiplicando el precio unitario del artículo (precio_unitario)
Ingresa el precio unitario del artículo: 125
por la cantidad de artículos comprados (cantidad). Este Ingresa la cantidad de artículos comprados: 5
resultado se almacena en la variable costo_total. El costo total de la compra es: 625.0
Ej e r c i c i o s Pr á c t i c o s
Optativos | No entregables
Ru t a d e A v a n c e
Optativos | No entregables
Guía estructurada Establecimiento de Objetivos a Corto Plazo
La Ruta de Aprendizaje te proporcionará directrices claras para
avanzar en tu proyecto integrador final, ayudándote a mantenerte Cada 8 clases, recibirás sugerencias sobre los avances que
enfocado y alineado con los objetivos del curso. deberías hacer en tu proyecto, en línea con los temas y habilidades
que hemos desarrollado en las clases anteriores. Esto te permitirá
integrar de manera efectiva los conocimientos adquiridos e ir
Mantené el Ritmo:
avanzando poco a poco en la construcción de la “Pre-Entrega” y la
La Ruta de Aprendizaje te permitirá monitorear tu progreso de “Entrega Final del Proyecto”
manera constante, asegurándote de que mantengas el ritmo
adecuado y cumplas con los hitos establecidos para finalizar tu
proyecto con éxito.
Cadenas de caracteres
Ca d e n a d e c a r a c t e r e s
Las cadenas de caracteres (strings)no son más que secuencias de letras, números o símbolos que se juntan para formar
palabras, frases o incluso datos como números de teléfono o direcciones.
Son ideales para almacenar información no numérica, como datos personales o de productos.
Ca d e n a d e c a r a c t e r e s
Las cadenas pueden delimitarse con comillas simples o dobles.
risa = 'ja'
carcajada = risa * 5 # jajajajaja
linea = "-" * 15 # ---------------
Op e r a d o r +
Para unir (concatenar) dos o más cadenas se utiliza el nombre = input("Ingrese su nombre: ") # Juan
saludo = "Hola " + nombre
operador + (más), tal como se vé en el ejemplo de la print(saludo) # Hola Juan
derecha.
Sl i c i n g (r e b a n a d o )
El slicing te permite cortar porciones de una cadena de caracteres. Para hacer slicing, usamos corchetes [ ] y dentro
indicamos desde qué índice queremos empezar a cortar, y hasta qué índice queremos llegar, separados por dos puntos
(:).
Importante: el índice final que pongas no se incluye, es como decir: "cortame desde acá hasta acá, pero sin incluir el
último caracter". # Definimos una cadena
frase = "Aprender Python es divertido"
Sl i c i n g (r e b a n a d o )
Y todavía hay más. También podés hacer slicing con saltos entre caracteres, usando un tercer parámetro. Esto te permite,
por ejemplo, tomar sólo cada segundo carácter de una cadena.
En este ejemplo, con ::2, le indicamos a Python que debe tomar caracteres de dos en dos, a partir del primero y hasta
llegar al final.
¡El slicing es una herramienta muy poderosa para cuando necesitás manipular texto en Python!.
Operadores relacionales
De c i s i o n e s
Los operadores relacionales en Python, que también se
conocen como operadores de comparación, sirven para
algo clave: comparar valores. El resultado de esta
comparación siempre es un valor booleano, es decir, True
(verdadero) o False (falso), dependiendo de si la condición
que estás evaluando es cierta o no. Esto es súper
importante, porque estos operadores son los que te
permiten tomar decisiones en tus programas.
Op e r a d o r e s r e l a c i o n a l e s
Operador Descripción Ejemplo
print(7 == 7) # True
== Igual a: compara si dos valores son iguales. print(9 == 10) # False
print(7 != 7) # False
!= Diferente de: compara si dos valores no son iguales. print(9 != 10) # True
print(7 < 7) # False
< Menor que: verifica si el valor de la izquierda es menor que el de la derecha. print(9 < 10) # True
print(8 > 6) # True
> Mayor que: verifica si el valor de la izquierda es mayor que el de la derecha. print(5 > 5) # False
Menor o igual que: verifica si el valor de la izquierda es menor o igual al de la print(8 <= 6) # False
<= print(5 <= 5) # True
derecha.
Mayor o igual que: verifica si el valor de la izquierda es mayor o igual al de la print(8 >= 8) # True
>= print(4 >= 5) # False
derecha.
Co m p a r a c i ó n d e c a d e n a s
Las cadenas de texto se comparan carácter por carácter, siguiendo un orden basado en su codificación (ASCII o Unicode).
Esto significa que Python va a ir chequeando cada carácter de la cadena, de izquierda a derecha, hasta que encuentre una
diferencia o hasta que una de las cadenas se termine.
print("apple" < "banana") # True Como ves, Python no sólo se fija en si las letras son
print("apple" > "Apple") # True
print("apple" < "apples") # True
iguales, sino también en si son mayúsculas o
minúsculas, o si una cadena tiene más o menos
print("python" == "python") # True
print("Python" != "python") # True caracteres. ¡Esto es súper útil cuando necesitás
comparar nombres, palabras o cualquier tipo de texto
print("A" < "a") # True
print("z" > "Z") # True en tus programas!
Operadores lógicos
not a
Op e r a d o r e s l ó g i c o s
Se utilizan los operadores lógicos para tomar decisiones basada en múltiples condiciones. Los operadores lógicos
utilizados en Python son and, or y not.
Operador Descripción Ejemplo
and Devuelve True si ambos operandos son True a and b
a y b son expresiones lógicas. Cada una de ellas puede ser verdadera o falsa.
Si a y/o b son valores numéricos, se tratan como True o False según su valor sea cero o no.
Estructuras de control
Es t r u c t u r a s
Las estructuras de control en Python son clave porque te
permiten tener un programa que no simplemente corre una
lista de instrucciones de manera secuencial, sino que
puede adaptarse a distintas situaciones. Dependiendo de
las condiciones que se encuentren, podés hacer que el
programa ejecute una parte del código o repita una acción
varias veces. Estas estructuras son lo que le da vida a los
programas, haciéndolos más dinámicos e interactivos.
Co n d i c i o n a l e s | i f
Las estructuras condicionales tienen como objetivo
ejecutar un bloque de instrucciones u otro en base a una
condición que puede ser verdadera o falsa. La palabra Condición
if nota >= 7:
Si la condición es True se ejecuta el bloque dentro del if. print("Aprobado.")
Luego, independientemente del valor de verdad de la
condición.
Indentación
Co n d i c i o n a l e s | i f
Esa pequeña sangría al principio de la línea no es sólo por estilo; le dice a Python que esas líneas de código forman parte
del bloque del if. Vamos a poner otro ejemplo para que quede bien claro:
edad = 18
En este caso, estamos verificando si alguien tiene 18 años o más. Si la condición es True, Python va a imprimir "Sos
mayor de edad". Si no, simplemente va a seguir con el resto del programa, sin hacer nada especial con esa línea.
Co n d i c i o n a l e s | i f …e l s e
if edad >= 18:
Ya vimos cómo if le da la capacidad a tu programa de # Bloque de instrucciones que se
# ejecuta si la condición es verdadera
tomar decisiones cuando una condición es verdadera. print("Puedes pasar.")
else:
# Bloque de instrucciones que se
Pero, ¿qué pasa cuando esa condición no se cumple? # ejecuta si la condición es falsa
print("No admitido.")
Ahí es donde entra en juego else. Mientras que if se
encarga de ejecutar un bloque de código solo si algo es Preguntamos si edad es mayor o igual que 18. Si es
True, else viene al rescate cuando esa condición resulta verdad, mostramos “Puedes pasar.” y el programa continúa
ser False. sin ejecutar el bloque del else. Si es falso, mostramos “No
admitido.” y obviamos el bloque del if.
Co n d i c i o n a l e s | i f …e l s e
Co n d i c i o n a l e s a n i d a d o s
nota = 85
Los condicionales anidados son súper útiles, pero a veces la estructura asociada (indentaciones varias) se empieza a
convertir en algo difícil de entender, aún para el propio programador. Afortunadamente, en algunos casos es posible
reemplazar esta “cascada” de condicionales con otra estructura que provee Python: el if…elif…else.
Co n d i c i o n a l e s | i f …e l i f …e l s e
Este es un script que hace lo mismo que el
nota = 85
anterior, pero usando elif.
if nota >= 60:
Ahora el código se ve mucho más ordenado y print("¡Aprobaste!")
fácil de seguir. Pero ¿qué es exactamente lo if nota >= 90:
print("¡Excelente calificación!")
que hace elif? elif nota >= 75:
print("Muy buen trabajo.")
else:
Básicamente, es una forma de agregar más print("Buen esfuerzo, pero hay margen de
mejora.")
condiciones en una estructura if, pero sin else:
necesidad de anidar los bloques de código uno print("No alcanzaste la calificación mínima para
aprobar.")
dentro del otro.
¡Vamos a la práctica!
Ej e r c i c i o s Pr á c t i c o s
Optativos | No entregables
C o n t r o l d e in v e n t a r io d e u n a t ie n d a d e v id e o ju e g o s
Imaginá que estás ayudando a una tienda de videojuegos a organizar su inventario.dueño te pide que escribas un
programa que verifique si hay stock suficiente de un videojuego y, si no hay, que avise que hay que reponerlo.
El programa debería pedirle al usuario que ingrese la cantidad actual en stock y, en base a esa cantidad, mostrar si se
necesita hacer un nuevo pedido o no.
Ej e r c i c i o s Pr á c t i c o s
Optativos | No entregables
Co m p ra c o n d e s c u e n t o s
Escribe un programa en Python que solicite al usuario el monto total de la compra y la cantidad de artículos que
está comprando. El programa debe determinar el descuento aplicable según las siguientes reglas:
Ɣ Si la cantidad de artículos comprados es mayor o igual a 5 y el monto total es mayor a $10000, aplica un
descuento del 15%.
Ɣ Si la cantidad de artículos comprados es menor a 5 pero mayor o igual a 3, aplica un descuento del 10%.
Ɣ Si la cantidad de artículos comprados es menor a 3, no se aplica descuento.
Al final, el programa debe imprimir el monto total de la compra después de aplicar cualquier descuento o
simplemente el monto original si no hay descuento.
Bucles while
El b u c l e w h i l e
Funciona como una puerta giratoria: el programa sigue girando hasta que
le digas que pare.
El b u c l e w h i l e
En pocas palabras, un bucle while es una herramienta súper útil que te permite
hacer que tu programa repita una acción hasta que se cumpla una condición.
Podés verlo como una conversación en la que el programa se pregunta algo una y
otra vez hasta obtener una respuesta que cumpla con lo que espera.
Mientras la condición que definas al comienzo del bucle siga siendo verdadera
(True), seguirá ejecutándose. Una vez que esa condición ya no se cumpla, el bucle
se detiene y el programa continúa con el resto de las instrucciones.
¡Pr o b e m o s w h i l e !
Nuestro primer programa con bucles usa una variable,
numero, que comienza en 1. El bucle while sigue # Inicializamos la variable 1
numero = 1 2
ejecutándose mientras numero sea menor o igual a 10. 3
while numero <= 10: 4
print(numero) 5
En cada iteración, el programa imprime el valor actual de # Incrementamos el valor de 6
numero y luego lo incrementa en 1. Cuando numero llega a numero 7
# en 1 en cada iteración 8
11, la condición numero <= 10 ya no se cumple y el bucle se numero = numero + 1 9
detiene. 10
Contadores
Co n t a d o r e s
El contador es uno de los conceptos más básicos y útiles en
programación. Básicamente, un contador es una variable que suma (o # Inicializamos el contador
numero = 1
resta) de a uno cada vez que ocurre algo, como cuando se repite una
while numero <= 10:
acción dentro de un bucle. La idea es llevar un registro de cuántas print(numero)
veces ha sucedido algo. # Incrementamos el contador en 1
# en cada iteración
numero = numero + 1
¡Si! En el ejemplo anterior, cuando imprimimos los números de 1 a 10,
la variable “numero” era un contador.
¿Có m o f u n c i o n a u n c o n t a d o r ?
Vas a usar mucho los contadores, así que necesitas recordar esto:
Acumuladores
Ac um uladores
El acumulador opera de manera similar a un contador pero, en lugar de sumar de a uno, lo que hace es acumular un valor que puede
ir variando. Mientras que el contador te dice cuántas veces pasó algo, esta herramienta indica cuánto se acumuló a lo largo del
tiempo o de una serie de acciones.
Por ejemplo, en el contexto del Trabajo Final Integrador (TFI), podrías usar un bucle con un acumulador para sumar la cantidad total
de productos que tenés en el depósito. O sumar los importes de las ventas a lo largo de todo un mes.
Lo importante aquí es recordar que así como el contador suma de a uno, el acumulador suma el valor que vos le asignes en cada
vuelta del bucle.
Ej e m p l o
Este código simula las ventas de productos total = 0 # Inicializamos el acumulador en cero
dia = 1 # Inicializamos el contador en cero
en una tienda durante 3 días. Cada día, se
pide que se ingrese el monto de las ventas y # Simulamos ventas de productos en una tienda, usando un bucle
# Supongamos que ingresamos productos durante 3 días
ese valor se acumula en la variable total. Al while dia <= 3:
mismo tiempo, un contador (dia) se usa para print("Día", dia)
venta = float(input("Monto de las ventas del día: "))
controlar cuántas veces se repite el ciclo. Al
final del bucle, se muestra el monto total total = total + venta # Acumulamos el monto en el
acumulador
acumulado de todas las ventas. dia = dia + 1 # Incrementamos el contador:
Bucles y cadenas
Buc le w hile y c adenas
Los bucles while son muy útiles para recorrer cadenas de texto en Python, permitiendo que el programa repita una acción mientras
se cumpla una condición. Usando un while, podés recorrer cada carácter de la cadena hasta llegar al final.
Para hacerlo, necesitás una variable que funcione como índice, comenzando en 0. Este índice representa la posición del carácter a
mostrar o manipular.
A medida que el bucle avanza, el índice se incrementa para moverse por la cadena. Mientras el índice sea menor que la longitud de
la cadena (obtenida con len()), el bucle seguirá ejecutándose. Podés acceder a cada carácter utilizando el índice entre corchetes [].
Una vez que el índice alcanza la longitud de la cadena, el bucle se detiene. Así, podés usar while para procesar o mostrar cada
carácter de una cadena de manera controlada, ya sea para imprimirlos o manipularlos.
carácter por carácter mientras el valor del índice sea # Inicializamos el contador para los índices
menor que la longitud de la misma. Usamos print() para indice = 0
mostrar tanto el número del carácter (calculado como # Usamos un bucle while para recorrer la cadena
indice + 1) como el carácter en sí, accediendo a la while indice < len(cadena):
# Mostramos el número y el carácter
cadena con cadena[indice]. Luego, incrementamos el print("caracter", indice + 1, ":", cadena[indice])
índice para avanzar al siguiente carácter de la cadena y
# Incrementamos el contador en 1
así hasta terminar. ¡Probalo! indice = indice + 1
¡Vamos a la práctica!
Ejercicios Prácticos
Optativos | No entregables
Tips:
Ɣ Vas a necesitar un contador.
Ɣ Tené presente las estructuras condicionales.
Ejercicios Prácticos
Optativos | No entregables
Tips:
Ɣ Antes de empezar, pensá si es necesario usar contadores o acumuladores.
Ɣ Recordá que input() siempre devuelve cadenas de caracteres.
¡N U EV O CU EST I ON A RI O EN
CA M PU S!
Pero antes…
Or g a n i za n d o d a t o s e n Py t h o n
Imaginate que tenés que hacer las compras del mes. No basta con
memorizar todo lo que tenés que comprar, y si lo intentás, probablemente
olvides algo importante. Entonces, ¿qué hacés? Armás una lista de
compras.
Python te ofrece una herramienta, llamada listas, qué es más o menos lo
mismo pero aplicado a la programación: en lugar de recordar cada dato por
separado, te proporciona una estructura donde podés almacenar toda esa
información junta y organizada en lugar de manejar cada dato
individualmente.
¿Qu é e s u n a l i s t a e n Py t h o n ?
En Python, una lista es una estructura que te permite almacenar varios valores dentro de una sola variable. A diferencia de
una simple variable que almacena un único valor, una lista puede contener varios elementos, como si fuera una caja que
guarda distintas cosas, una al lado de la otra. Una lista se crea encerrando los elementos entre corchetes [] y separándolos
por comas:
La lista llamada compras contiene cuatro productos. Cada uno de estos productos tiene una posición específica dentro de
la lista, lo que nos permite acceder a ellos cuando lo necesitemos.
Cr e a c i ó n y a c c e s o a l i s t a s
Como vimos, crear una lista en Python es muy sencillo: sólo necesitás usar corchetes y separar los elementos con comas.
Pero, ¿cómo hacés para acceder a un elemento específico dentro de la lista? Acá es donde entra el concepto de índices.
Cada elemento dentro de una lista tiene una posición, y esa posición se llama índice. El primer elemento de la lista tiene
el índice 0, el segundo tiene el índice 1, y así sucesivamente.
Cr e a c i ó n y a c c e s o a l i s t a s
Podés acceder a un elemento de la lista simplemente usando su índice:
compras = ["manzanas", "pan", "leche", "queso"]
print(compras[0]) # Imprime "manzanas"
print(compras[2]) # Imprime "leche"
El índice 0 nos da el primer producto, que es "manzanas", y el índice 2 nos da el tercero, que es "leche". Y si querés
cambiar el valor de un elemento, simplemente lo asignás de nuevo:
compras[1] = "yogur"
print(compras) # Ahora la lista es ["manzanas", "yogur", "leche", "queso"]
Ya vimos que las listas se pueden modificar, por ejemplo, cambiando uno de sus elementos. Pero también podés podés
agregar nuevos elementos a la lista usando el método append():
compras.append("cereales")
print(compras)
# Ahora la lista es ["manzanas", "yogur", "leche", "queso", "cereales"]
Esto es clave cuando trabajás en proyectos como el PFI, donde el inventario de productos cambia constantemente. Cada
vez que se agrega un nuevo producto, lo podés añadir a la lista de forma sencilla y seguir adelante. ¡Y todavía hay más!
Qu i t a r e l e m e n t o s d e l a l i s t a
Cuando en el programa de tu Proyecto Final Integrador un Por último, el método len() te permite conocer la cantidad
producto se vende o se da de baja en el inventario, de elementos que tiene una lista.
necesitás eliminarlo de la lista. Para esto, podemos usar
productos = ["manzanas", "pan", "leche"]
el método remove(). Este método busca el primer valor cantidad_productos = len(productos)
que coincida con el que indicás y lo elimina de la lista. print("Cantidad de productos:",
cantidad_productos)
# Imprime "Cantidad de productos: 3"
productos = ["manzanas", "pan", "leche"]
productos.remove("pan")
print(productos) Esto es útil para controlar bucles, donde querés recorrer
# Imprime ["manzanas", "leche"]
toda la lista sin ir más allá de su límite.
Tuplas
Una tupla es como una lista, pero con una característica Tené cuidado: si intentás cambiar un elemento de una
importante: es inmutable. Una vez que creás una tupla, tupla, Python te va a decir que no se puede:
no podés cambiar sus elementos. Son útiles cuando
# Esto va a dar un error porque las tuplas
querés asegurarte de que ciertos valores no cambian. # no se pueden modificar
mi_tupla[1] = "yogur"
mi_tupla = ("manzanas", "pan", "leche")
Dato 1 : nombre_tienda
Probá este código. Verás esto en la terminal:
Dato 2 : calle falsa 123
Dato 3 : Buenos Aires
Lista de listas
List a de list as
Vimos que en una lista podemos almacenar datos numéricos y cadenas de caracteres. También se pueden almacenar
datos booleanos, y cómo no, ¡otras listas! Cuando esto ocurre, decimos que tenemos una “lista de listas”.
Lista de listas
Una lista de listas es simplemente una lista donde cada uno de sus elementos es, a su vez, otra lista. Podés pensar en
esto como una tabla, donde cada fila representa una lista con múltiples datos relacionados. Por ejemplo, en el contexto
del Proyecto Final Integrador, podríamos tener una lista que almacene productos junto con su precio y cantidad disponible
en el inventario. Cada "producto" sería una lista con esos tres elementos: nombre, precio y cantidad.
Ɣ El primer índice nos dice qué producto queremos (por ejemplo, inventario[0] para las "manzanas").
Ɣ El segundo índice nos dice qué dato de ese producto queremos: inventario[0][0] es el nombre ("manzanas"),
inventario[0][1] es el precio (100), y inventario[0][2] es la cantidad (50).
Y usamos un bucle while para recorrer cada producto en el inventario. Dentro del bucle, accedemos a los elementos
individuales de cada producto con un segundo nivel de índices.
Ahora, vamos a analizar un ejemplo que nos será útil para el TFI: usaremos un bucle while y una lista de listas para
ingresar datos de varios productos al inventario.
El script comienza creando una lista vacía llamada productos, que va a almacenar los datos de los productos ingresados.
Luego, pide al usuario que ingrese el código del producto, que es un número entero. El bucle while se utiliza para
controlar la repetición del proceso de entrada de datos: mientras el usuario no ingrese un código igual a 0, el ciclo sigue
ejecutándose.
Cada vez que el usuario ingresa un código válido, el script pide la descripción del producto, su precio y la cantidad que
está siendo ingresada. Estos cuatro datos se almacenan como una lista dentro de la lista productos, lo que permite
agrupar todos los datos de un mismo producto.
Ingreso m asivo de dat os
productos = [] # Lista que almacenará los productos
# Usamos el bucle while para ingresar los datos mientras el código no sea 0
while codigo != 0:
descripcion = input("Ingresá la descripción del producto: ")
precio = float(input("Ingresá el precio del producto: "))
cantidad = int(input("Ingresá la cantidad del producto: "))
# Agregamos los datos del producto como una lista dentro de la lista de productos
productos.append([codigo, descripcion, precio, cantidad])
(Sigue en la próxima diapositiva)
# Solicitamos nuevamente el código del siguiente producto
codigo = int(input("Ingresá el código del siguiente producto (0 para finalizar): "))
El ciclo continúa solicitando productos hasta que el usuario ingresa el código "0". En ese momento, el bucle se detiene.
Finalmente, el programa muestra todos los productos almacenados en la lista, accediendo a los datos de cada producto
usando los índices correspondientes (por ejemplo, el código está en la posición 0 de la sublista, la descripción en la 1, y
así sucesivamente).
De esta manera, la persona que usa el programa puede ingresar varios productos, cada uno con sus datos asociados, y
almacenarlos en una estructura clara y organizada.
¡Vamos a la práctica!
Ej e r c i c i o s p r á c t i c o s
Optativos | No entregables
R e g is t r o d e p r o d u c t o s e n u n in v e n t a r io
Vas a implementar un sistema básico para registrar productos en el inventario de una tienda. El programa debe permitir
que el usuario agregue productos a una lista hasta que decida no agregar más. Luego, deberás mostrar todos los
productos ingresados al inventario.
Tips:
Ɣ Usá una lista para almacenar los productos. Diseña la lista pensando en el TFI.
Ej e r c i c i o s p r á c t i c o s
Optativos | No entregables
C o n s u lt a r e l s t o c k d e p r o d u c t o s
Tu programa debe permitir al usuario consultar el inventario de una tienda para verificar si un producto está en stock. Si
el producto está en la lista, el programa debe informarlo, si no, debe mostrar un mensaje indicando que no está
disponible.
Tips:
Ɣ Usá una lista para almacenar los productos en stock.
Ɣ Permití que el usuario ingrese el nombre de un producto a consultar.
Ɣ Recorré la lista con un bucle while para verificar si el producto está en stock.
L i s t a s e n Py t h o n
Una lista es una estructura que te permite almacenar varios valores dentro de una sola variable. Una lista se crea
encerrando los elementos entre corchetes [] y separándolos por comas:
Cada elemento tiene una posición específica dentro de la lista, lo que nos permite acceder a ellos cuando lo necesitemos.
¿Có m o c r e a r u n m e n ú ?
Podés usar un bucle while, que mantiene el programa corriendo hasta que la persona elija la opción de salir. Cada vez
que ingresa una opción, el programa responde en consecuencia. Si ingresa una opción incorrecta, también se lo
hacemos saber.
while opcion != 3:
print("Menú Interactivo")
print("1. Opción 1")
print("2. Opción 2")
print("3. Salir")
opcion = int(input("Seleccioná una opción: "))
¡Vamos a la práctica!
Ejercicios prácticos
Optativos | No entregables
Re g i s t r o d e v e n t a s p o r d ía
Desarrollá un programa que permita registrar las ventas diarias de un comercio durante 5 días. Al finalizar, el sistema
debe mostrar el total de ventas realizadas en cada día y el promedio de ventas.
Tips:
Ɣ Usá un bucle while que permita al usuario ingresar el monto de las ventas diarias.
Ɣ Asegurate de validar que el monto ingresado sea un valor positivo.
Ɣ Usá un acumulador para la suma de las ventas.
Ejercicios prácticos
Optativos | No entregables
A c t u a l i za c i ó n d e l i n v e n t a r i o a p a r t i r d e u n a r r e g l o
En una tienda, es necesario actualizar el inventario cuando se venden productos. A continuación, te proporcionamos un
arreglo con una lista de productos, donde cada producto tiene un código, una descripción y una cantidad en stock.
Escribí un programa que permita:
A c t u a l i za c i ó n d e l i n v e n t a r i o a p a r t i r d e u n a r r e g l o
El arreglo de productos disponibles es que ves a continuación.
productos = [
["P001", "Manzanas", 50],
["P002", "Peras", 40],
["P003", "Bananas", 30],
["P004", "Naranjas", 60]
]
El script que tenés que hacer debe modificar la cantidad en stock de acuerdo a cada venta realizada. Si la cantidad
vendida es mayor que la cantidad disponible en stock, el programa debe mostrar un mensaje de error.
Esta instancia evaluativa es de carácter obligatorio y es un punto clave dentro de la cursada ya que nos permitirá evaluar
tu progreso en el recorrido y asegurar que estás en el camino correcto en la construcción del Proyecto Final Integrador.
Se encontrará disponible en la Ruta N°2 de Campus Virtual Se entregará en la Ruta N°2 de Campus Virtual
Preentrega de proyecto
Obligatorio | Entregable
Formato de entrega: Crear una carpeta en drive (pública) que contenga los archivos y carpetas que conforman tu proyecto.
Compartir el link en el apartado de entrega en el Campus Virtual.
Ɣ El menú debe permitir al usuario seleccionar entre diferentes opciones relacionadas con la gestión de productos.
Ɣ Entre las opciones, deben incluirse: agregar productos al inventario y mostrar los productos registrados.
Preentrega de proyecto
Obligatorio | Entregable
Ɣ Cada producto debe ser almacenado en una lista, y debe tener al menos un nombre y una cantidad asociada.
3. Mostrar el inventario
Ɣ Al seleccionar la opción correspondiente, el sistema debe permitir visualizar los productos almacenados hasta el
momento.
Preentrega de proyecto
Requisitos para la entrega:
Recuerda:
Esta instancia de entrega te va a permitir sentar las bases para el desarrollo del inventario que será parte de tu
Proyecto Final Integrador.
Recuerda seguir las buenas prácticas de codificación que hemos discutido en clase y utilizar bucles, listas y
condicionales de manera eficiente.
¡N U EV O CU EST I ON A RI O EN
CA M PU S!
Pero antes…
Buc le for
El bucle for es una estructura de control que se utiliza para iterar sobre
for variable in secuencia:
una secuencia de elementos, como una lista, cadena, rango o cualquier
# Bloque de código
otro objeto iterable.
Con el bucle for no necesitas usar contadores, ya que la variable del ciclo puede
asumir esa función. Esto permite escribir algunos programas de una manera más
compacta. Producto disponible: manzanas
En el ejemplo, cada repetición del bucle, la variable producto toma uno de los Producto disponible: naranjas
elementos de la lista, y lo muestra en pantalla. Producto disponible: bananas
Producto disponible: peras
productos = ["manzanas", "naranjas", "bananas", "peras"]
B u c l e f o r c o n r a n g e ()
Esta estructura se utiliza cuando sabemos la cantidad de
repeticiones a efectuar. Tiene el siguiente formato:
i: Variable que incrementa su valor en paso
unidades en cada iteración.
for i in range(inicio, fin, paso):
# sentencia1
inicio: Es el valor inicial de i
# sentencia2 fin: El ciclo se repite mientras i sea menor que fin.
# primer sentencia fuera del for paso: Valor en que se incrementa i en cada
iteración.
B u c l e f o r c o n r a n g e ()
range() puede tener uno, dos o tres parámetros: Ejemplo de uso: Salida:
for num in range(5, 16, 2):
Ɣ range(inicio, fin, paso) print(num, end=" ") 5 7 9 11 13 15
Ɣ range(inicio, fin): Se asume que paso = 1.
Ɣ range(fin): Se asume que inicio = 0 y paso = 1.
for num in range(3, 11):
print(num, end=" ") 3 4 5 6 7 8 9 10
La función range() no incluye el último valor en la secuencia. Por
ejemplo, range(1, 6) generará los números del 1 al 5, pero no
incluirá el 6 en la secuencia. for num in range(10):
print(num, end=" ") 0 1 2 3 4 5 6 7 8 9
Break
Break permite salir de un bucle for (o while) en el El uso de break no se considera una buena práctica. Si
momento que se cumpla alguna condición. un bucle for requiere un break, quizás pueda resolverse
el proceso usando en su lugar while.
suma = 0
Ej e m p l o 2 : p r o c e s a r d a t o s
Este programa simula la carga de 5 importes de productos de un supermercado, mostrando el total al final.
Ejercicios prácticos
Optativos | No entregables
Su m a d e n ú m e r o s n a t u r a l e s
Desarrolla un programa en Python que calcule la suma de los números naturales hasta un número dado utilizando un
bucle for. La suma de los números naturales hasta el número n se define como la suma de todos los números enteros
positivos desde 1 hasta n.
Por ejemplo, la suma de los números naturales hasta 6 es 1 + 2 + 3 + 4 + 5 + 6 = 21.
Tips:
Ɣ ¡Usá range()!
Ɣ El programa debe pedir un número entero n y devolver la suma de los números naturales hasta n.
Ejercicios prácticos
Optativos | No entregables
T ip s :
Ɣ Utilizá un bucle for y range() para recorrer los códigos e imprimirlos.
Diccionarios
¿Qu é e s u n d i c c i o n a r i o ?
Ejemplo:
# Diccionario de productos con nombre y cantidad
productos = {
"Manzanas": 50,
"Peras": 30,
"Bananas": 40
}
¿ C ó m o a c c e d e r a u n d ic c io n a r io ?
Ejemplo:
print(productos["Manzanas"])
# Salida: 50
U s o d e l m é t o d o g e t ()
Ɣ .get() te permite acceder a los valores sin riesgo de errores si la clave no existe.
Ɣ Si la clave no está, devuelve un valor por defecto.
Ejemplo:
productos = { "Manzanas": 50, "Peras": 30, "Bananas": 40}
A g r e g a r y a c t u a l i za r e l e m e n t o s
Python permite agregar o actualizar los datos almacenados en un diccionario. Con la sintaxis del ejemplo, se modifica el
valor asociado a una clave existente, o se crea una clave si no existe previamente.
Ejemplo:
# Se crea la clave "naranjas" con el valor 25
productos["Naranjas"] = 25
Es posible eliminar datos de un diccionario. Python posee el comando del, que permite realizar esta acción.
Ejemplo:
productos = {
"Manzanas": 50,
"Peras": 30, {'Manzanas': 50, 'Peras': 30,
"Bananas": 40 'Bananas': 40}
}
print(productos)
Re c o r r e r u n d i c c i o n a r i o
Para recorrer un diccionario podemos utilizar bucles. Hay tres métodos muy útiles:
Ɣ .items(): Devuelve clave-valor como tuplas.
Ɣ .keys(): Devuelve sólo las claves.
Ɣ .values(): Devuelve solo los valores.
Ejemplo con .items():
# Recorremos el diccionario para mostrar los productos
print("Inventario de productos:")
for producto, cantidad in productos.items():
print("Producto:", producto, "- Cantidad en stock:", cantidad)
Re c o r r e r u n d i c c i o n a r i o
El i m i n a r u n e l e m e n t o e s p e c íf i c o
Ɣ pop() nos permite eliminar un elemento específico del diccionario.
Ɣ Al usarlo, además de eliminar el elemento, podemos capturar el valor eliminado.
Elimina la clave "Bananas" y devuelve su valor. Si la clave no existe, devuelve un valor predeterminado ("No hay bananas").
Borrar un dic c ionario c om plet o
Cuando queremos eliminar todo el diccionario de una vez, podemos usar el método clear() o la palabra clave del.
Di c c i o n a r i o s p a r a a l m a c e n a r d a t o s
Ejercicios prácticos
Optativos | No entregables
Ge s t i ó n d e i n v e n t a r i o c o n d i c c i o n a r i o s
En un comercio, se necesita gestionar los productos y sus precios. Desarrollá un programa que permita:
1. Ingresar el nombre de tres productos y su precio correspondiente, guardándolos en un diccionario donde la clave
es el nombre del producto y el valor es su precio.
2. Una vez ingresados, mostrará todos los productos y sus precios en pantalla.
Co n s u l t a r s t o c k e n i n v e n t a r i o
El inventario de una tienda está almacenado en un diccionario, donde las claves son los nombres de los productos y los
valores son las cantidades disponibles en stock. Creá un programa que:
Ejercicios prácticos
Optativos | No entregables
Co n s u l t a r s t o c k e n i n v e n t a r i o
productos = {
"Manzanas": 50, Ingresá el nombre del producto: Peras
"Naranjas": 30, Stock disponible de Peras: 25
"Peras": 25
}
¡N U EV O CU EST I ON A RI O EN
CA M PU S!
Funciones
¿Qu é e s u n a f u n c i ó n e n Py t h o n ?
De f i n i c i ó n d e u n a f u n c i ó n
Para definir una función en Python usamos la palabra clave def seguida del nombre de la función y un par de
paréntesis.
Ejemplo:
Para ejecutar una función, simplemente debemos “llamarla” (invocarla) por su nombre. Es importante recordar que la función debe ser definida
antes de invocarla por primera vez.
Ejemplo:
# La función se define con def y comienza luego de los “:”
def saludar():
print("Hola, ¡bienvenido!")
¿Qu é s o n l o s a r g u m e n t o s ?
Los argumentos y parámetros permiten pasar información a las funciones. En este ejemplo, a y b son parámetros de la función sumar.
Cuando llamás a la función, le pasás dos valores (argumentos) que ocuparán esos lugares:
Ejemplo:
def sumar(a, b):
resultado = a + b
print("El resultado es:", resultado)
sumar(5, 3)
Tipos de argum ent os
El uso de argumentos permite que las funciones sean mucho más dinámicas y reutilizables. Los argumentos no tienen que limitarse a números.
Podés pasarle cadenas, listas, diccionarios, o cualquier tipo de dato que Python soporte.
Ejemplo:
def saludar(nombre="invitado"):
print("Hola", nombre)
Ejemplo:
def sumar(a, b):
resultado = a + b
print("El resultado es:", resultado)
sumar(b=7, a=2)
# Salida: El resultado es: 9
Fu n c i o n e s q u e d e v u e l v e n v a l o r e s
Las funciones pueden retornar valores, esto les da a las funciones un nivel adicional de utilidad y flexibilidad. Esto es posible
utilizando la orden return.
Al utilizar return, le estás diciendo a la función que una vez que haya hecho su trabajo, debe "regresar" un valor al código que la
llamó, para que se pueda hacer algo más con él.
Por ejemplo, si tenés una función que puede sumar dos números y muestra el resultado con print(), la función simplemente mostraría
el resultado, pero no podrías hacer nada más con él. Pero si usás return, podés usar ese resultado de manera más amplia en el resto
de tu programa. Es una forma de mantener el flujo de información y acciones dentro del código.
Uso de ret urn
Ejemplo de return:
def sumar(a, b):
resultado = a + b
return resultado
total = sumar(5, 3)
print("El total es:", total)
Fu n c i o n e s q u e l l a m a n a o t r a s
# Función para calcular las ventas de un producto
def calcular_ventas_producto1():
Dentro de una función es posible invocar a
ventas = 10 # Ejemplo de ventas
otra función. Esto es algo súper útil porque return ventas
permite dividir tareas complejas en partes # Función para calcular las ventas de otro producto
más pequeñas y fáciles de manejar, además def calcular_ventas_producto2():
ventas = 15 # Ejemplo de ventas
de reutilizar código. En lugar de escribir todo return ventas
de nuevo, podés aprovechar funciones ya
# Función que llama a las anteriores para calcular el total
definidas para resolver partes de un def calcular_ventas_totales():
problema mayor. total = calcular_ventas_producto1() + calcular_ventas_producto2()
return total
saludar()
print(mensaje) # Esto va a dar un error
Variable “global”:
mensaje_global = "Hola, ¿cómo estás?"
def saludar():
print(mensaje_global)
saludar()
print(mensaje_global) # Esto funciona bien
¡Vamos a la práctica!
Ejercicios prácticos
Optativos | No entregables
Ge s t i ó n d e d e s c u e n t o s
Imaginá que en tu tienda querés implementar un sistema de descuentos automáticos. Vas a desarrollar un programa que permita calcular el
precio final de un producto después de aplicar un descuento. Para hacerlo:
1. Crea una función que reciba como parámetros el precio original del producto y el porcentaje de descuento, y que retorne el precio
final con el descuento aplicado.
2. Luego, pedí que se ingrese el precio y el porcentaje de descuento. Mostrá el precio final después de aplicar el descuento.
Ejercicios prácticos
Optativos | No entregables
Cá l c u l o d e p r o m e d i o d e v e n t a s
Desarrollá un programa que permita calcular el promedio de ventas de la tienda. Para esto:
1. Creá una función que reciba como parámetro una lista de ventas diarias y devuelva el promedio de esas ventas.
2. Solicitá a la persona que ingrese las ventas de cada día durante una semana (7 días). Usá la función para calcular y mostrar el
promedio de ventas al finalizar.
Ob j e t i v o s d e l a c l a s e
En esta clase vamos a visualizar cómo podés darle vida a tu Proyecto Final Integrador. Crearemos un sistema básico
para gestionar un inventario de productos, usando funciones y un diccionario, que será nuestra estructura principal de
datos. A lo largo de la clase vamos a:
Recordemos que una función es una forma de organizar y reutilizar nuestro código, son casi indispensables para nuestro
proyecto. Entre otros motivos, porque modularizan y ordenan nuestro código, haciendo más fácil su escritura y
mantenimiento posterior. ¡No pueden faltar en nuestro PFI!
Di c c i o n a r i o p a r a e l i n v e n t a r i o
Podemos emplear un diccionario como estructura de datos para el inventario de productos. Usamos una clave para cada
dato que queremos almacenar. Por ejemplo:
Diccionario “inventario”:
inventario = {
1: {"nombre": "Manzana", "descripcion": "Fruta fresca",
"cantidad": 50, "precio": 0.5, "categoria": "Frutas"},
2: {"nombre": "Pan", "descripcion": "Pan casero",
"cantidad": 20, "precio": 1.0, "categoria": "Panadería"}
}
Di c c i o n a r i o p a r a e l i n v e n t a r i o
Detalle de la posible estructura del diccionario:
Ɣ nombre: Es el nombre del producto. Es una cadena de caracteres que lo describe de manera general.
Ɣ descripcion: Descripción más detallada del producto. Es también un texto.
Ɣ cantidad: Cantidad disponible del producto en el inventario. Es un número entero.
Ɣ precio: Representa el precio del producto. Es un número decimal (tipo float).
Ɣ categoria: Indica la categoría a la que pertenece el producto. Esto nos permite organizar los productos en grupos
según su tipo.
Re g i s t r o d e p r o d u c t o s
Necesitamos una función registrar_producto() que se encargue de agregar los productos en el diccionario inventario con
un código único y sus respectivos datos. La función pedirá que se ingrese los detalles del producto y los almacenará en el
diccionario.
Usaremos una variable que actúe como un contador para los códigos de los productos, así cada vez que se registra un
producto, se le asigna automáticamente un código nuevo.
El diccionario inventario usará el código del producto como clave, mientras que los valores asociados a esa clave serán
otro diccionario que contendrá toda la información del producto.
List ado de produc t os
Nuestro proyecto necesita una función que se encargue de mostrar una lista todos los productos que están almacenados en
el diccionario inventario. La hemos llamado mostrar_productos().
El código de esta función debe recorrer todo el inventario y mostrar la información de cada producto de manera clara,
incluyendo su código, nombre, descripción, cantidad, precio y categoría. Para ello puedes usar un bucle.
Ten en cuenta que si el inventario está vacío, la función debería informar que aún no han ingresado productos
A c t u a l i za c i ó n d e p r o d u c t o s
En aplicaciones como la que estamos desarrollando, es necesario contar con una opción que permita actualizar los datos
almacenados. Para ello, escribiremos la función actualizar_producto().
Esta función debería solicitar que se ingrese el código del producto a actualizar, y verificar si existe en nuestro diccionario.
En caso afirmativo se piden el o los datos a actualizar y se efectúa el reemplazo de los valores en el diccionario. Si el
producto cuyo código hemos ingresado no existe, se puede mostrar un mensaje explicando la situación antes de salir de la
función.
Por supuesto, ¡puedes agregar todas las funcionalidades extra que consideres necesario!
El i m i n a c i ó n d e p r o d u c t o s
En algún momento vas a necesitar quitar elementos de tu lista de productos. Productos obsoletos, o que no desees
comercializar más, deberían ser quitados del diccionario para que no ocupen lugar o demoren innecesariamente las
búsquedas.
eliminar_producto() debe pedir el código del producto a borrar, buscarlo en el diccionario, y si lo encuentra, quitarlo de él.
Si no lo encuentra, podemos notificar a la usuaria o usuario de esta situación.
TIP: Es posible que puedas utilizar en esta función un algoritmo similar el que usaste en actualizar_producto()
Búsqueda de produc t os
Frecuentemente necesitamos conocer datos de un único producto. Si bien la función mostrar_productos() que escribiste
antes hace esto, lo cierto es que si tenemos muchos productos el listado puede ser demasiado extenso.
Podés crear una función más especializada (a la que llamamos buscar_producto() ) que le pida a la persona que opera el
programa ingresar el código del producto que está buscando, y si el producto existe en el inventario, mostrar la información
de ese único producto, con un formato claro.
TIP: Si el código que se ingresa no está registrado, podemos avisar que no se encontró el producto.
Re p o r t e d e s t o c k b a j o
En muchos proyectos nos interesa conocer qué productos de nuestro inventario poseen pocas unidades. Esta información
nos facilita organizar las compras y reposición de stock.
Para eso, podemos crear reporte_bajo_stock(), una función que se encargue de indicar que se ingrese un límite de stock,
y luego busque en el diccionario todos los productos cuya cantidad sea igual o inferior a ese límite. Finalmente, debería
mostrar todos esos productos en pantalla.
TIP: Validá la entrada del usuario o usuaria, para evitar que se ingresen valores negativos o que no sean coherentes con la
lógica de tu programa.
En clases anteriores hemos analizado la utilidad que tiene dotar a nuestra aplicación de un menú que permita a la persona
que lo utiliza acceder a las funciones que hemos desarrollado.
Por ejemplo, nuestro menú principal podría mostrar las distintas acciones disponibles (registrar productos, mostrar el
inventario, actualizar productos, eliminarlos, buscarlos y generar reportes de bajo stock). Se seleccionará la acción
escribiendo el número de la opción que se desea accionar y el programa entonces ejecutaría la función correspondiente.
Ejercicios prácticos
Optativos | No entregables
Re g i s t r o d e p r o d u c t o s c o n v a l i d a c i o n e s
Escribí una función que permita registrar un nuevo producto en el inventario, pero con una condición: la cantidad de
productos debe ser mayor que 0 y el precio también debe ser un valor positivo.
Al ingresar una cantidad o precio no válido, debe mostrar un mensaje de error y pedir los datos nuevamente hasta que
sean correctos.
Ejercicios prácticos
Optativos | No entregables
V i s u a l i za c i ó n p e r s o n a l i za d a d e p r o d u c t o s
Agregá una función al sistema explicado en la clase, que permita simular la venta de un producto.
El usuario o usuaria deberá ingresar el código del producto y la cantidad a vender. Si la cantidad en stock es suficiente,
la función debe restar esa cantidad del inventario. Si la cantidad solicitada es mayor a la disponible, debe mostrar un
mensaje de error.
¡N U EV O CU EST I ON A RI O EN
CA M PU S!
Pero antes…
M ó d u l o s e n Py t h o n
Ejemplo:
# Asi importamos el módulo llamado “nombre_del_modulo”
import nombre_del_modulo
Una vez que lo importamos, podemos acceder a las funciones que contiene ese módulo utilizando la sintaxis
nombre_del_modulo.funcion()
El m ó d u l o m a t h
El módulo math contiene muchas funciones matemáticas útiles. Podemos importarlo y usar sus funciones:
Ejemplo:
import math # Importar el módulo
numero = 4.7
redondeado = math.floor(numero) # Redondear hacia abajo
print("El número redondeado hacia abajo es:", redondeado)
Ejemplo:
import random # Importar el módulo
numero_aleatorio = random.randint(1, 10) # Generar un número aleatorio entre 1 y 10
print("Número aleatorio entre 1 y 10:", numero_aleatorio)
Ejemplo:
from math import sqrt
raiz = sqrt(25) # Ahora podemos usar sqrt directamente sin escribir math.
print("La raíz cuadrada de 25 es:", raiz)
La próxima clase aprenderemos a usar un módulo que nos permitirá interactuar con bases de datos.
Base de dat os
Una base de datos es un sistema que nos permite almacenar y organizar información de manera estructurada. Entre
muchas otras, posee estas ventajas:
Tablas
En una base de datos, los datos se organizan en tablas. Podemos pensarlas como una hoja de cálculo, donde cada fila
representa un registro (como un producto del inventario) y cada columna representa un campo (por ejemplo, el nombre del
producto, el precio, o la cantidad disponible). Esta estructura facilita la búsqueda, el filtrado y la modificación de datos.
Ca m p o s y r e g i s t r o s
En una base de datos, un campo es una columna dentro de una tabla que almacena un tipo específico de información
sobre los registros que están en esa tabla. Por ejemplo, si pensamos en una tabla de productos, cada producto sería un
registro, y cada campo almacenaría una característica específica de ese producto, como su nombre, cantidad o precio.
CAMPO
REGISTRO
Estos son algunos de los tipos de datos más comunes y útiles para un proyecto de gestión de inventario:
Ɣ Texto: Este tipo de dato se utiliza para almacenar cadenas de texto. Por ejemplo, para guardar el nombre del
producto ("Manzana", "Leche", etc.) o su descripción.
Ɣ Números enteros: Es ideal para cantidades de productos o para campos que necesiten valores numéricos sin
decimales, como el código de un producto.
Ɣ Números de punto flotante: Ideal para almacenar precios o valores que incluyan decimales.
Ɣ Fechas y horas: Ideales para registrar cuándo ocurrió algo, como la fecha en que un producto fue agregado al
inventario.
Ca m p o c l a v e
El campo clave, también conocido como clave primaria, se utiliza para identificar de manera única cada registro. Permite
diferenciar cada producto de manera única. Posee dos características principales:
Ɣ Unicidad: No puede haber dos registros en la tabla que tengan el mismo valor en el campo clave. Por ejemplo, en
nuestra tabla de productos, podríamos usar un campo llamado "ID Producto", que asigna un número único a cada
producto. Así, aunque tengamos dos productos llamados "Pan", cada uno tendría un número de ID diferente, lo que
nos permite diferenciarlos.
Ɣ No puede ser nulo: El campo clave debe tener siempre un valor. No puede quedar vacío. Si no existiera una clave
para un registro, no tendríamos manera de identificarlo claramente dentro de la tabla.
Di c c i o n a r i o v s . b a s e d e d a t o s
En la clase anterior decidimos que cada producto se almacenará dentro de un diccionario llamado inventario:
inventario = {
1: {
"nombre": "Manzana",
"descripcion": "Fruta fresca y deliciosa",
"cantidad": 50,
"precio": 0.5,
"categoria": "Frutas"
}
}
Di c c i o n a r i o v s . b a s e d e d a t o s
A partir de lo que hemos aprendido en esta clase, podríamos reemplazar ese diccionario por una tabla como esta:
¡Vamos a la práctica!
Ejercicios prácticos
Optativos | No entregables
Co n c e p t u a l i za c i ó n d e u n a t a b l a
Imaginá que estás a cargo de organizar una pequeña biblioteca de la
escuela en una base de datos. Los datos que se quieren registrar incluyen
el título del libro, el autor, la fecha de publicación y el género. Definí:
Ejercicios prácticos
Optativos | No entregables
Ge n e r a c i ó n d e v a l o r e s ú n i c o s c o n r a n d o m
Escribí un programa en Python que genere cinco códigos únicos de cinco
dígitos para usarlos como identificadores de productos en un inventario.
Para esto, utilizá el módulo random. Cada código generado debe ser
diferente de los otros.
Si m u l a c i ó n d e p r e c i o s c o n m a t h y r a n d o m
Supongamos que deseás simular los precios de 10 productos en un
inventario. Escribí un programa que:
Fundamentos SQL
¿Qu é e s SQL i t e y p a r a q u é s i r v e ?
V e n t a j a s y d e s v e n t a j a s d e SQL i t e
SQLite es ideal para sistemas como el inventario que estamos desarrollando, debido a su simplicidad y accesibilidad. No
requiere instalación adicional ni configuración compleja. Es ideal para pequeños proyectos.
I m p o r t a r e l m ó d u l o SQL i t e
Para acceder a las funciones de SQLite en Python, solo tenemos que importar el módulo sqlite3 usando la misma sintaxis
que empleamos para otros módulos.
Ejemplo:
import sqlite3 # Importar el módulo
Una vez que importamos sqlite3, podemos usar todas sus funciones y objetos para conectarnos a una base de datos,
ejecutar consultas y almacenar o recuperar datos.
Co n e x i ó n a l a b a s e d e d a t o s
Luego de importar el módulo, usamos la función sqlite3.connect() para conectarnos (o crear una base de datos nueva si no
existe). Al conectar con la base de datos, creamos un "puente" entre nuestro programa y el archivo de base de datos.
Ejemplo:
import sqlite3 # Importar el módulo
conexion = sqlite3.connect("inventario.db") # Conectar a la base de datos (o crearla)
cursor = conexion.cursor() # Crear un cursor para interactuar con la base de datos
El cursor nos permite ejecutar comandos SQL para interactuar con la base de datos, como crear tablas y gestionar los
datos que vamos a guardar.
SEL ECT : Re c u p e r a r d a t o s
La consulta SELECT nos permite obtener todos los registros de una tabla o sólo algunos en particular, según los filtros o
condiciones que le indiquemos:
SEL ECT c o n c a m p o s e s p e c íf i c o s
Si en lugar de * ponemos el nombre de los campos que queremos recuperar, SELECT devuelve sólo estos datos. Por
ejemplo, si solo queremos ver el nombre y la edad de cada persona usamos:
A g r e g a n d o d a t o s c o n I N SERT
El comando INSERT permite agregar nuevos datos a una tabla. Es necesario especificar tanto los campos en los que
queremos añadir datos como los valores que queremos almacenar en esos campos:
Una transacción es un conjunto de operaciones que se ejecutan de forma "temporal" hasta que decidís confirmarlas o
descartarlas. SQLite mantiene estas operaciones en memoria (buffer) o en un archivo temporal y no las aplica al archivo
de la base de datos hasta que se haga un commit.
Si no se hace el commit() y la conexión se cierra, SQLite deshace automáticamente los cambios pendientes (un rollback
implícito), por lo que los datos no se guardan.
A c t u a l i za n d o d a t o s c o n U PDA T E
El comando UPDATE permite modificar datos que ya están guardados en una tabla. Podemos actualizar uno o varios
campos de un registro específico sin necesidad de agregar un nuevo registro.
¡Vamos a la práctica!
Ejercicios prácticos
Optativos | No entregables
Ejercicios prácticos
Optativos | No entregables
El i m i n a c i ó n d e r e g i s t r o s s e g ú n u n a c o n d i c i ó n