0% encontró este documento útil (0 votos)
25 vistas

Guia Python DOBLE POR PAG

guia de python

Cargado por

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

Guia Python DOBLE POR PAG

guia de python

Cargado por

jfrdmarval27
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 149

Iniciación con Python

Cla s e 02 - “Hola mundo”

¡Les damos la bienvenida!


Va mos a come nza r a gra ba r la
cla s e
Clase 0 1 . Clase 0 2 . Clase 0 3 .

Bienvenida Intro a Python Datos en Python


1. Introducción al curso. 1. Visual Studio Code + Python. 1. Conversión entre tipos de
2. Conceptos básicos: hardware, 2. "Hola Mundo" en Python. datos.
software, programa. 3. Sintaxis básica de Python. 2. Operadores algebraicos.
3. Concepto de algoritmo. 4. Variables. 3. Expresiones.
4. Introducción a Python 5. Tipos de datos simples. 4. Uso de input()
5. Programas con entrada,
procesamiento y salida de
datos.

¿Ya viste la “ Introducción al


programa" disponible en el campus
virtual?

La visualización y resolución de un breve cuestionario es de carácter


obligatorio para desbloquear los contenidos de las primeras 2 clases
Herramientas

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.

Nota: Si usas Windows, recuerda instalar seleccionado la


opción “Add python.exe to PATH”.

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:

1. Spanish Language Pack for Visual Studio Code,


que traduce a nuestro idioma la interfaz del editor.
2. Python extension for Visual Studio Code, que
proporciona una serie de herramientas específicas
para programar con Python.

¡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”.

Luego, en la pestaña que aparece en el área de


trabajo escribimos print(“¡Hola Mundo!”).
Ten cuidado en respetar exactamente la sintaxis que
se vé en la imágen.
H OL A M U N DO
El programa se ejecuta haciendo click en el ícono que
aparece en la esquina superior derecha de la ventana
de Visual Studio Code.
Vamos a ver que aparece una zona nueva en el
editor: la terminal de Python. Esa terminal es la
interfaz que utiliza Python para comunicarse con el
usuario.
Como se ve en la imágen, aparece la ruta al archivo
que hemos ejecutado, datos del usuario, y también la
salida de nuestro programa: “¡Hola Mundo!”
A pesar de su sencillez, ¡este es un gran primer paso
en nuestro camino a convertirnos en programadores!

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.

Nom bre de las variables


Los nombres de variables, funciones, etc, deben respetar las siguientes convenciones:
Ɣ Pueden ser cualquier combinación de letras (mayúsculas y minúsculas), dígitos y el carácter guión bajo (_), pero
no puede comenzar por un dígito. Se escriben en minúsculas, separando las palabras con el guión bajo.
Ɣ Se recomienda usar nombres que sean expresivos. Por ejemplo, contador es mejor que simplemente c.
Ɣ Python es “case sensitive”, diferencia entre mayúsculas y minúsculas.
Ɣ No se pueden usar como identificadores las siguientes palabras reservadas:

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

Algunos nombres de variables válidos pero no recomendados:

Su m a a re a ro m b o Im p Fin a l w 123rt 4 1 años

Algunos nombres de variables no válidos (Python reporta error):

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:

print("Linea 1") Linea 1


print()
print("Linea 2") Linea 2
Salida por pantalla
Argumento

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:

nombre = "Talento Tech" Declaración de


a = 20 variables
b = 30
promedio = (a + b) / 2 Operaciones y
print("Nombre:", nombre) asignación
print("La suma de",a,"y",b,"es",a+b)
print("Promedio:", promedio)

Salida por pantalla


L a f u n c i ó n p r i n t (): e n d
end=' ' es un parámetro opcional de la función print() y determina qué se debe imprimir al final de cada llamada a la
función. Por defecto es un carácter de nueva línea ('\n'), lo que significa que cada llamada a print() agrega
automáticamente una nueva línea al final.
Al cambiar end a una cadena nula (' ') con un espacio en blanco, modificamos su comportamiento:

print("¡Hola Mundo!", end=" ")


print("Aprendiendo Python.")

Salida por pantalla

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.")

Salida por pantalla


L a f u n c i ó n p r i n t (): \t
\t (tabulación) se utiliza para insertar un tabulador (o tabulación) en una cadena de texto. Cuando Python encuentra \t
dentro de una cadena a imprimir, inserta un espacio equivalente al de una tabulación.

print("Nombre \tApellido \tEdad")


print("Juan \tFernández \t32")

Salida por pantalla

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.

Tipos de datos simples


T I POS DE DA T OS.
En Python, un "tipo de dato" se refiere a la categoría o
clasificación de los valores que una variable puede
almacenar.
Cada valor en Python pertenece a un tipo de dato
específico, y estos tipos de datos determinan cómo se
almacenan los datos en la memoria y qué operaciones se
pueden realizar en ellos.

Los tipos de datos en Python son fundamentales para el


manejo de variables y la realización de operaciones en el
código.

T I POS DE DA T OS.

nombre = "Talento Tech"# string Python es un lenguaje de programación que no


requiere especificar el tipo de dato de una variable
al declararla.
numero = 1234 # int Python infiere automáticamente el tipo de dato en
tiempo de ejecución según el valor que se le asigna a
importe = 35.75 # float la variable. Esto proporciona flexibilidad y simplifica la
escritura de código.
Recordemos que la forma de asignar el dato a una
activo = False # bool variable es a través del operador de asignación “=”
Tipos de dat os
Existen una gran variedad de datos en Python. Entre ellos algunos que se consideran “tipos de datos básicos”:

int (e nte ros )

cadena = "Hola Mundo" # string


floa t (re a le s )
Tipos de datos entero = 3 # int
flotante = 12.3 # float
simples
s tring (ca de na s ) logico = True # boolean

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!

La resolución del cuestionario es de carácter obligatorio para poder


avanzar en la cursada.
Iniciación con Python
Clase 03 - “Tipos de datos”

¡Les damos la bienvenida!


Vamos a comenzar a grabar la clase
Clase 0 2 . Clase 0 3 . Clase 0 4 .

Intro a Python Datos en Python Ruta de avance


1. Visual Studio Code + Python. 1. Conversión entre tipos de 1. Definimos los requisitos del
2. "Hola Mundo" en Python. datos. Proyecto Integrador.
3. Sintaxis básica de Python. 2. Operadores algebraicos. 2. Menú de opciones.
4. Variables. 3. Expresiones. 3. Pedir, procesar y mostrar
5. Tipos de datos simples. 4. Uso de input() datos.
5. Programas con entrada,
procesamiento y salida de
datos.

Pero antes…

¡Resolvamos los ejercicios prácticos de


la clase anterior!
Co n v e r s i ó n d e t i p o s d e d a t o s
En ocasiones es necesario aplicar conversiones de valores entre tipos de datos para manipular los valores de forma
diferente. Por ejemplo, para concatenar valores numéricos con cadenas o representar posiciones decimales en números
que se iniciaron como valores enteros:

cadena = "1234"
entero = 45
flotante = 56.2

int(cadena) # convierte a entero (1234)


float(cadena) # convierte a coma flotante (1234.0)
str(entero) # convierte a cadena ("45")
str(flotante) # convierte a cadena ("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():

nombre = "Alan Turing"


edad = 38
notaFinal = 8.50
esEstudiante = False
domicilio = "Av. Talento Tech 1234"

print(type(nombre)) # <class 'str'>, cadena (string)


print(type(edad)) # <class 'int'>, entero (integer)
print(type(notaFinal)) # <class 'float'>, coma flotante (float)
print(type(esEstudiante)) # <class 'bool'>, lógico o booleano (boolean)
print(type(domicilio)) # <class 'str'>, cadena (string)
Operadores

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.

cantidad = 43 # int (enteros)


precio = 12.45 # float (reales)
nombre = "Adrián" # string (cadenas)
encendido = True # bool (lógicos)
Ex p r e s i o n e s y s e n t e n c i a s
Una expresión es una unidad de código que devuelve un valor y está formada por una combinación de operandos
(variables y literales) y operadores.

5 + 2 # Suma del número 5 y el número 2


a < 10 # Compara si el valor de la variable a es menor que 10
b is None # Compara si la identidad de la variable b es None
3 * (200 - c) # Resta a 200 el valor de c y lo multiplica por 3

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

Operador módulo: Obtiene el resto de dividir el operando de la modulo = 8 % 2


print(modulo) # 0 (8 es par)
% izquierda por el de la derecha. uno de sus usos es para saber si
modulo = 9 % 2
un número es par o impar print(modulo) # 1 (9 es impar)
divEntera = 10 // 6
División entera: Obtiene el cociente entero de dividir el divEntera2 = 25 // 4
//
operando de la izquierda por el de la derecha. print(divEntera) # 1
print(divEntera2) # 6

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.

nombre = input("Ingrese su nombre: ")

Variable que recibe Mensaje para ayudar al


el valor ingresado Función input
operador
L a f u n c i ó n i n p u t ()
Dado que input() devuelve únicamente valores tipo string, es necesario realizar una conversión a algún formato numérico
si se requiere operar matemáticamente con esos valores. Para ello, usamos las funciones int() y float():

num1 = input("Ingrese un número: ")


numero = float(num1) Ingrese un número: 20
resultado = numero * 2 20.0 x 2 = 40.0
print(numero,"x 2 =", resultado)

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.

Veamos algunos ejemplos…


Su m a d e d o s n ú m e r o s
Este ejemplo simple ilustra cómo se pueden utilizar las funciones input(), operadores aritmético y print() para escribir un
programa simple que suma dos números proporcionados por el usuario:

numero1 = float(input("Ingresa el primer número: "))


numero2 = float(input("Ingresa el segundo número: ")) Ingresa el primer número: 12
suma = numero1 + numero2 Ingresa el segundo número: 7
La suma de 12.0 y 7.0 es 19.0
print("La suma de",numero1,"y",numero2,"es",suma)

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:

nota1 = float(input("Ingresa la primera nota: "))


nota2 = float(input("Ingresa la segunda nota: ")) Ingresa la primera nota: 8
nota3 = float(input("Ingresa la tercera nota: "))
Ingresa la segunda nota: 6
Ingresa la tercera nota: 4
promedio = (nota1 + nota2 + nota3) / 3

print() El promedio de las tres notas es: 6.0


print("El promedio de las tres notas es:",promedio)

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 ”

¡Les damos la bienvenida!


Va mos a come nza r a gra ba r la
cla s e
Clase 0 3 . Clase 0 4 . Clase 0 5 .

Datos en Python Ruta de avance Condicionales


1. Conversión entre tipos de 1. Definimos los requisitos del 1. Cadena de caracteres.
datos. Proyecto Integrador. 2. Operadores lógicos.
2. Operadores algebraicos. 2. Menú de opciones. 3. Control de flujo: estructuras
3. Expresiones. 3. Pedir, procesar y mostrar condicionales (if, else, elif)
4. Uso de input() datos.
5. Programas con entrada,
procesamiento y salida de
datos.

Pero antes…

¡Resolvamos los “Ejercicios Prácticos”


de la clase anterior!
Ruta de avance

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.

La aplicación debe ser capaz de registrar, actualizar, eliminar


y mostrar productos en el inventario. Además, debe incluir
funcionalidades para realizar búsquedas y generar reportes
de productos con bajo stock.
Pr o y e c t o Fi n a l I n t e g r a d o r
El proyecto incluirá los medios necesarios para interactuar con una base de datos, implementará un menú con las opciones
disponibles, y mecanismos (funciones) para el mantenimiento de los datos de los productos, incluyendo:

Ɣ Registro: Alta de productos nuevos.


Ɣ Visualización: Consulta de datos de productos.
Ɣ Actualización: Modificar la cantidad en stock de un producto.
Ɣ Eliminación: Dar de baja productos.
Ɣ Listado: Listado completo de los productos en la base de datos.
Ɣ Reporte de Bajo Stock: Lista de productos con cantidad bajo mínimo.

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.

Comencemos a trabajar en el PFI creando una versión preliminar de su menú


de opciones.

Menú de opc iones


# Menú de opciones A la izquierda, una posible versión
print("Menú de Gestión de Productos\n")
print("1. Alta de productos nuevos")
del menú de opciones para nuestro
print("2. Consulta de datos de productos") proyecto.
print("3. Modificar la cantidad en stock de un producto")
print("4. Dar de baja productos") Verás que hay tres líneas que
print("5. Listado completo de los productos") comienzan con “#”. Esas líneas son
print("6. Lista de productos con cantidad bajo mínimo")
print("7. Salir") ignoradas por Python, y constituyen
# Solicitar al usuario que seleccione una opción
comentarios que el desarrollador
opcion = int(input("Por favor, selecciona una opción (1-7): ")) puede incluir en su código para
# Mostramos el nro de la opción seleccionada facilitar su lectura.
print("Has seleccionado:", opcion)
Menú de opc iones
El código de la diapositiva anterior utilizar varias líneas print() para generar el texto con las opciones disponibles, e input()
para leer la opción elegida por el usuario. Recordemos que input() regresa un texto, así que usamos int() para convertir lo
ingresado en un número entero.

La próxima clase aprenderemos a


utilizar estructuras de control para
poder ejecutar un bloque de código u
otro en función de la opción elegida.

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: Solicitar el precio del producto y el porcentaje de IVA


precio = float(input("Precio del producto: "))
iva = float(input("Porcentaje de IVA (por ejemplo, 21 para 21%): "))

# Proceso: Calcular el monto del IVA y el precio total


monto_iva = (precio * iva) / 100
precio_total = precio + monto_iva

# Salida: Mostrar el precio total incluyendo IVA


print("El precio total con IVA es:", precio_total)
Ex p l i c a c i ó n d e l c ó d i g o
Este programa toma el precio de un producto y un porcentaje de IVA como entrada, calcula el monto del IVA y lo suma al
precio original del producto, y luego imprime el precio total que el usuario deberá pagar, incluyendo el IVA.

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().

Precio del producto: 100


Porcentaje de IVA (por ejemplo, 21 para 21%): 21
El precio total con IVA es: 121.0

Ejemplo de ejecución del programa.

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%): "))

# Proceso: Calcular el monto del descuento y el precio final


monto_descuento = (precio * descuento) / 100
precio_final = precio - monto_descuento

# Salida: Mostrar el precio final después del descuento


print("El precio final después del descuento es:", precio_final)
Ex p l i c a c i ó n d e l c ó d i g o
Este programa pide el precio de un producto y un porcentaje de descuento (entrada), calcula el monto del descuento, lo
resta del precio original del producto y luego imprime el precio final que el usuario deberá pagar después de aplicar el
descuento.

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().

Precio del producto: 1200


Porcentaje de descuento (por ejemplo, 10 para 10%): 5
El precio final después del descuento es: 1140.0
Ejemplo de ejecución del programa.

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: Solicitar el precio unitario y la cantidad de artículos


precio_unitario = float(input("Ingresa el precio unitario del artículo: "))
cantidad = int(input("Ingresa la cantidad de artículos comprados: "))

# Proceso: Calcular el costo total


costo_total = precio_unitario * cantidad

# Salida: Mostrar el costo total de la compra


print("El costo total de la compra es:", costo_total)
Ex p l i c a c i ó n d e l c ó d i g o
Se toma como entrada el precio unitario de un artículo y la cantidad de artículos que se van a comprar. Luego, se calcula el
costo total multiplicando el precio unitario por la cantidad de artículos y se muestra el resultado al usuario, que es el monto
total a pagar por la compra.

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

Salida de datos: Ejemplo de ejecución del programa.


Ɣ Finalmente, el programa muestra el precio total del
producto con IVA incluido utilizando la función print().
¡Vamos a la práctica! ๶

Ej e r c i c i o s Pr á c t i c o s
Optativos | No entregables

Ticket de la compra Consumo de combustible


1. Escribir un programa que solicite el nombre, la Realizar una aplicación en Python que;
cantidad y el valor unitario de tres productos. A partir de la cantidad de litros de combustible que
2. Luego, debe calcular el importe de IVA (21%) de consume un coche por cada 100 km de recorrido, el
cada producto. costo de cada litro de combustible y la longitud del
3. Por último, debe mostrar en la terminal el ticket de viaje realizado (en kilómetros), muestra un detalle de
la operación con todos los datos de la compra. los litros consumidos y el dinero gastado.
Ruta de aprendizaje
Cla s e 04 - “Ruta de a va nce ”

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.

Frecuencia: Cada 8 clases (4, 12)


¡N U EV O CU EST I ON A RI O EN
CA M PU S!

La resolución del cuestionario es de carácter obligatorio para poder


avanzar en la cursada.

Iniciación con Python


Cla s e 05 - “Condiciona le s ”
¡Les damos la bienvenida!
Va mos a come nza r a gra ba r la
cla s e

Clase 0 4 . Clase 0 5 . Clase 0 6 .

Ruta de avance Condicionales Bucles while


1. Definimos los requisitos del 1. Cadena de caracteres. 1. Control de flujo: bucles while.
Proyecto Integrador. 2. Operadores lógicos. 2. Concepto y usos de los
2. Menú de opciones. 3. Control de flujo: estructuras contadores.
3. Pedir, procesar y mostrar condicionales (if, else, elif). 3. Concepto y usos de los
datos. acumuladores..
Pero antes…

¡Resolvamos los “Ejercicios Prácticos”


de la clase anterior!

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.

# Creación de variables del tipo String


apellido = "Gimenez"
nombre = "Ana María" # Pueden incluir espacios en blanco.
dirección = "Mitre 123" # Pueden incluir dígitos.
password = "$3ytR&%|" # Pueden incluir caracteres especiales.
edad = "23" # Pueden tener solamente dígitos.
nada = "" # Esta es una cadena “nula” (vacía)

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.

dia1 = "Lunes" # Definición de cadenas usando comillas dobles


dia2 = 'Martes' # Definición de cadenas usando comillas simples

Las cadenas pueden delimitarse con comillas simples o dobles.

print("Mi perro 'Dinamita'") # Mi perro 'Dinamita'


print('Mi perro "Dinamita"') # Mi perro "Dinamita"
Op e r a d o r *
Hay que tener en cuenta que en Python algunos operadores tienen una
función ligeramente diferente según el contexto en que se usan. Por
ejemplo,hemos visto que con * podemos multiplicar números. Pero si lo
usamos con una cadena y un número, en ese orden, replicamos la
cadena. ¡Probalo!

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.

Este operador "+" suma números o concatena cadenas. var1 = 3 + 5 # 8 (entero)


var2 = "3" + "5" # 35 (cadena)
No funciona con tipos mixtos; para evitar errores, var3 = 3 + "5" # TypeError
tenemos que usar las funciones de conversión. var4 = str(3) + "5" # 35 (cadena)
var5 = 3 + int("5") # 8 (entero)
Longit ud y ac c eso
A veces es importante saber cuántos caracteres contiene Se puede acceder a los elementos de la cadena utilizando
una cadena. Ese valor se lo suele denominar “longitud”, y subíndices:
se puede obtener muy fácilmente utilizando una función cadena = "Aprendemos Python"
print(cadena[0]) # A
llamada len(): print(cadena[5]) # d
print(cadena[-1]) # n
nombre = 'Talento Tech Adultos' print(cadena[-2]) # o
print(len(nombre)) # se imprime 20

El primer caracter tiene subíndice cero. Si usamos


Ojo: len() cuenta incluso los caracteres “invisibles”, como
subíndices negativos, se cuentan desde el final de la
los espacios en blanco.
cadena.

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"

# Subcadena desde el principio hasta el índice 8 (no inclusive)


subcadena = frase[0:8]

print("Subcadena desde el inicio hasta el índice 8:", subcadena)


#Imprime Subcadena desde el inicio hasta el índice 8: Aprender
Sl i c i n g (r e b a n a d o )
Algo interesante del slicing es que podés omitir el índice de inicio o el índice de fin, y Python automáticamente va a
asumir que querés cortar desde el principio o hasta el final de la cadena, respectivamente:

frase = "Aprender Python es divertido"

subcadena = frase[:8] # Subcadena desde el inicio hasta el índice 8 (sin incluirlo)


print("Subcadena desde el inicio hasta el índice 8:", subcadena)
# Imprime Aprender

subcadena = frase[9:] # Subcadena desde el índice 9 hasta el final


print("Subcadena desde el índice 9 hasta el final:", subcadena)
# Imprime 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.

texto = "Talento Tech"


subcadena = texto[::2]
print("Subcadena obtenida:", subcadena)
# Imprime TlnoTc

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

or Devuelve True si alguno de los operandos es True a or b

not Devuelve True si el operandos False, y viceversa not a

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

clave asociada a esta estructura es if. nota = float(input("Nota: "))

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

if edad >= 18:


print("Sos mayor de edad.")

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

edad = int(input("Ingresá tu edad: ")) Si alguna de las dos condiciones no se


tiene_licencia = input("¿Tenés licencia de conducir? (S/N): ")
cumple (por ejemplo, si la persona no
# Verificamos si la persona puede conducir tiene 18 años o si no tiene licencia), el
if edad >= 18 and tiene_licencia == "S":
print("Podés conducir.") programa saltará al else y mostrará "No
else:
print("No podés conducir.") podés conducir.".
Co n d i c i o n a l e s a n i d a d o s
Hasta ahora, vimos cómo if y else te permiten tomar decisiones en tu programa, pero ¿qué pasa cuando
necesitás evaluar más de una condición a la vez? Acá es donde entran en juego las estructuras condicionales
anidadas.
if variable condición valor:
print("")
Este concepto puede sonar un poco complicado al if variable condición valor:
principio, pero en realidad es bastante intuitivo: se trata print("")
else:
de poner una condición dentro de otra. Esto te permite if variable condición valor:
manejar situaciones donde la decisión que vas a tomar print("")
else:
depende de una serie de condiciones que deben print("")
else:
evaluarse en secuencia. print("")

Co n d i c i o n a l e s a n i d a d o s
nota = 85

Veamos un ejemplo: if nota >= 60:


print("¡Aprobaste!")
Vamos a escribir un programa que evalúa una if nota >= 90:
calificación y decide qué mensaje imprimir en print("¡Excelente calificación!")
else:
base al resultado. Primero, verificamos si la if nota >= 75:
print("Muy buen trabajo.")
persona aprobó. Si es así, después evaluamos
else:
en qué rango de calificaciones se encuentra print("Buen esfuerzo, pero hay margen de
mejora.")
para dar un feedback más preciso. else:
print("No alcanzaste la calificación mínima para
aprobar.")
Co n d i c i o n a l e s a n i d a d o s
En el ejemplo anterior, primero chequeamos si la calificación es suficiente para aprobar. Si lo es, se imprime el mensaje
de aprobación, pero ahí no termina. Dependiendo de qué tan alta sea la nota, el programa va a imprimir un mensaje
adicional. Si la nota es 90 o más, el programa va a decir que es excelente. Si está entre 75 y 89, va a felicitar al estudiante
por el buen trabajo. Si es menor, va a sugerir que aún hay margen para mejorar.

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.

Iniciación con Python


Clase 06 - “Bucles while”
¡Les damos la bienvenida!
Vamos a comenzar a grabar la clase

Clase 0 5 . Clase 0 6 . Clase 0 7 .

Condicionales Bucles while Listas y Tuplas


1. Cadena de caracteres. 1. Control de flujo: bucles while. 1. Listas y tuplas: creación y
2. Operadores lógicos. 2. Concepto y usos de los manipulación.
3. Control de flujo: estructuras contadores. 2. Uso de subíndices.
condicionales (if, else, elif). 3. Concepto y usos de los 3. Métodos de listas y tuplas.
acumuladores. 4. Recorrer una lista con while.
Pero antes…

¡Resolvamos los “Ejercicios Prácticos”


de la clase anterior!

Bucles while
El b u c l e w h i l e

El bucle while te permite repetir acciones en tu programa de manera


controlada. En lugar de escribir el mismo código una y otra vez, el bucle
hace el trabajo por vos hasta que se cumpla una condición que le hayas
asignado.

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

El resultado es que se muestran los números del 1 al 10, uno


por línea.

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.

Fijate, aqui está otra vez, con comentarios nuevos:

¿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:

Ɣ Lo primero que hacés es inicializar el contador en cero (o en otro valor si es necesario).


Ɣ Luego, dentro del bucle, cada vez que sucede la acción que estás contando le sumás uno al
contador.
Ɣ Cuando el bucle termina, el contador va a tener guardada la cantidad total de veces que se
realizó esa acción.

¡Es muy fácil!


Ej e m p l o
Este ejemplo arranca inicializando el contador en 0. Luego, tenemos un # En bucle se repite 5 veces
bucle while que se repite mientras contador sea menor que 5. En cada while contador < 5:
print("Vuelta", contador + 1)
iteración del bucle el programa muestra qué número de “vuelta” estamos
ejecutando (sumando 1 al contador para que empiece en 1 en lugar de 0), y # Cada vez que ocurre la acción,
# sumamos 1 al contador
después incrementa el valor del contador en 1. Cuando el bucle termina, el contador = contador + 1
programa muestra el valor final del contador, que es 5.
# Al final del bucle, mostramos el
# valor del contador
El contador va sumando de a uno cada vez que sucede la acción y, al final print("El contador llegó a:",
contador)
del bucle, posee el valor total de veces que el bucle se ejecuta.

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:

# Al final del bucle, mostramos el total acumulado


print("El total de las ventas ingresadas es: $", total)
¿Dó n d e u s a r u n a c u m u l a d o r ?
Los acumuladores son útiles en situaciones donde necesitás sumar valores de manera progresiva.
Por ejemplo:

Ɣ Suma de productos: Llevar el total de productos agregados a un inventario.


Ɣ Cálculo del valor del stock: Acumular el valor total del inventario sumando el precio de cada producto disponible por la
cantidad existente.
Ɣ Sumar montos de ventas: Acumular el total de ventas realizadas en un día o una semana. Sería algo similar a lo visto en el
ejemplo anterior.

Estamos seguros que en el TFI vas a usar acumuladores y/o contadores.

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.

¿Lo vemos con un ejemplo?

Buc le w hile y c adenas


El programa recorre la cadena de texto. Inicializamos el # Definimos la cadena de texto
índice en 0, que será utilizado para recorrer la cadena cadena = "Talento Tech"

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

Control de stock de productos


Desarrollá un programa que permita al usuario ingresar el nombre de varios productos y la cantidad en stock que hay de
cada uno. El programa debe seguir pidiendo que ingrese productos hasta que el usuario decida salir, ingresando "salir"
como nombre de producto. Después de que el bucle termine, el programa debe mostrar la cantidad total de productos
ingresados.

Tips:
Ɣ Vas a necesitar un contador.
Ɣ Tené presente las estructuras condicionales.
Ejercicios Prácticos
Optativos | No entregables

Validación de precios de productos


Escribí un programa que permita al usuario ingresar el precio de un producto, pero que sólo acepte valores mayores a 0.
Si el usuario ingresa un valor inválido (negativo o cero), el programa debe mostrar un mensaje de error, y volver a pedir
el valor hasta que se ingrese uno válido. Al final, el programa debe mostrar el precio aceptado.

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!

La resolución del cuestionario es de carácter obligatorio para poder


avanzar en la cursada.
Iniciación con Python
Cla s e 07 - “Lis ta s y tupla s ”

¡Les damos la bienvenida!


Va mos a come nza r a gra ba r la
cla s e
Clase 0 6 . Clase 0 7 . Clase 0 8 .

Bucles while Listas y tuplas Ruta de avance


1. Control de flujo: bucles while. 1. Listas y tuplas: creación y 1. Pre-Entrega del Proyecto Final
2. Concepto y usos de los manipulación. Integrador.
contadores. 2. Uso de subíndices. 2. Menú de opciones.
3. Concepto y usos de los 3. Métodos de listas y tuplas. 3. Pedir, procesar y mostrar
acumuladores. 4. Recorrer una lista con while. datos.

Pero antes…

¡Resolvamos los “Ejercicios prácticos”


de la clase anterior!
Listas y tuplas

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:

compras = ["manzanas", "pan", "leche", "queso"]

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"]

Agregar elem ent os a la list a

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")

Las tuplas son útiles cuando querés proteger datos que


Python sabe que se trata de una tupla y no de una lista
no deberían cambiar, como precios fijos o información de
porqué está delimitada por paréntesis en lugar de
configuración en el sistema. ¡Tenelo en cuenta!
corchetes.
Listas, tuplas y bucles

List as y buc les w hile


Supongamos que querés mostrar la lista de productos disponibles en tu inventario. Lo podés hacer fácilmente usando un
bucle while que recorra la lista desde el principio hasta el final, utilizando un contador como índice que comience en 0 y se
incrementa en cada iteración.
productos = ["manzanas", "pan", "leche"]
indice = 0 Producto 1 : manzanas
while indice < len(productos): Producto 2 : pan
print("Producto", indice + 1, ":", productos[indice]) Producto 3 : leche
indice = indice + 1

P̈robá este código. Verás esto en la terminal.


Tuplas y buc les w hile
Al igual que las listas, podés recorrer una tupla con un bucle while. Si bien no podés modificar los elementos de una tupla,
nada impide que puedas acceder a ellos de la misma forma que con una lista:
configuracion_tienda = ("nombre_tienda", "calle falsa 123", "Buenos Aires")
indice = 0

while indice < len(configuracion_tienda):


print("Dato", indice + 1, ":", configuracion_tienda[indice])
indice = indice + 1

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.

Invent ario de produc t os


Ejemplo de lista de listas: Inventario de productos

# Lista de productos: cada producto tiene nombre, precio y cantidad


inventario = [ ["manzanas", 100, 50],
["pan", 50, 20],
["leche", 60, 30] ]
# Recorrer el inventario y mostrar los datos de cada producto
indice = 0
while indice < len(inventario):
producto = inventario[indice]
print("Producto:", producto[0])
print("Precio: $", producto[1])
print("Cantidad disponible:", producto[2])
print("-------------------------")
indice = indice + 1
Invent ario de produc t os
En el ejemplo anterior, cada producto es una lista que contiene tres elementos: el nombre del producto, su precio y la
cantidad disponible. La lista inventario contiene tres listas, una por cada producto. Para acceder a un producto en
particular, usamos dos niveles de índice.

Ɣ 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.

Ingreso m asivo de dat os


Ejemplo de lista de listas: Ingreso masivo de productos al inventario

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

# Solicitamos el primer código de producto


codigo = int(input("Ingresá el código del producto (0 para finalizar): "))

# 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): "))

Ingreso m asivo de dat os


# Mostramos la lista final de productos
print("Productos ingresados:") (Viene de la diapositiva anterior)
for producto in productos:
print("Código:", producto[0], "Descripción:", producto[1], "Precio:", producto[2], "Cantidad:",
producto[3])

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.

Pre Entrega de Proyecto


Cla s e 08 - “P re e ntre ga de proye cto”
Repaso

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:

vehiculos = ["coche", "tren", "avión", "barco"]

Cada elemento tiene una posición específica dentro de la lista, lo que nos permite acceder a ellos cuando lo necesitemos.

vehiculos = ["coche", "tren", "avión", "barco"]


print(vehiculos[0]) # Imprime "coche"
print(vehiculos[2]) # Imprime "avión"
Re c o r r e r u n a l i s t a c o n w h i l e
Este ejemplo te muestra cómo recorrer una lista con un bucle while. Lo que hacemos es definir una lista de productos y
luego recorrerla para mostrar cada uno de los elementos.

productos = ["manzanas", "pan", "leche"]


indice = 0 Producto 1 : manzanas
while indice < len(productos): Producto 2 : pan
print("Producto", indice + 1, ":", productos[indice]) Producto 3 : leche
indice = indice + 1

P̈robá este código. Verás esto en la terminal.

¿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: "))

# Aquí va el código que gestiona las opciones


Validar dat os
Debemos asegurarnos que los datos que ingresa el usuario se ajusten a lo que el script requiere. Recordemos cómo
hacerlo:
cantidad = -1

while cantidad <= 0:


cantidad = int(input("Ingresá la cantidad de productos (debe ser mayor a 0): "))
if cantidad <= 0:
print("La cantidad no puede ser menor o igual a 0. Intentá de nuevo.")

print("Ingresaste una cantidad válida:", cantidad)

¡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:

Ɣ Seleccionar un producto a partir de su código.


Ɣ Ingresar la cantidad vendida (que debe ser mayor que cero).
Ɣ Actualizar la cantidad en stock de ese producto restando la cantidad vendida.
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
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.

Pre Entrega de Proyecto


Revisión de progreso
Obligatorio | Entregable

Revisión de progreso Formato de Entrega:


Compartir un link al drive (público) que contenga los archivos y
Estamos acercándonos a un punto clave en el desarrollo
carpetas que conforman tu proyecto. Los links deberán ser
del proyecto, donde tendrán la oportunidad de compartir los entregados en el apartado de “Pre-Entrega de Proyecto” en el
avances realizados hasta el momento actual. Campus Virtual.

En este punto del proceso es fundamental que reúnan todo


el trabajo que han desarrollado hasta la clase N°8. Esta
es una gran oportunidad para consolidar sus ideas y
asegurarse de que están en el camino correcto

Revisión del progreso


Obligatorio | Entregable

Hemos cubierto los fundamentos de Python, desde la


creación de algoritmos y el manejo de variables,
hasta el uso de condicionales, bucles while, y
listas. Ahora, es el momento de poner en práctica
estos conceptos para avanzar hacia tu Proyecto
Final Integrador (PFI). La tarea de esta entrega
consiste en construir una versión parcial del sistema
de inventario, utilizando los conocimientos
adquiridos.
Revisión del progreso
Obligatorio | Entregable

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.

Este espacio de entrega está conformado por:

Revisión del progreso


Obligatorio | Entregable
A partir de la Clase N° 8 tendrás 7 días de corrido para realizar la autoevaluación y la entrega en el campus virtual

Cuestionario de Autoevaluación Preentrega de proyecto:

Se evaluará la aplicación de los conocimientos adquiridos


Te permitirá reflexionar sobre tu propio aprendizaje, progreso y en la realización de un proyecto.
cumplimiento de las consignas o rúbricas previamente
establecidas y en caso de ser necesario realizar las La realización progresiva de los "Ejercicios prácticos" y el
modificaciones o ajustes correspondientes antes de realizar la seguimiento de las rúbricas de la "Ruta de Avance" los
preentrega. guiará paso a paso hacia la realización de la "Preentrega" y
el "Proyecto Integrador Final"

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.

Requisitos para la entrega:

1. Crear un menú interactivo

Crear un menú interactivo utilizando bucles while y condicionales if-elif-else:

Ɣ 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

2. Agregar productos al inventario

Implementar la funcionalidad para agregar productos a una lista:

Ɣ Cada producto debe ser almacenado en una lista, y debe tener al menos un nombre y una cantidad asociada.

3. Mostrar el inventario

Mostrar los productos ingresados:

Ɣ 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.

Tendrás 7 días de corrido para realizar la entrega

¡N U EV O CU EST I ON A RI O EN
CA M PU S!

La resolución del cuestionario es de carácter obligatorio para poder


avanzar en la cursada.
Iniciación con Python
Cla s e 09 - “Bucle s for”

¡Les damos la bienvenida!


Va mos a come nza r a gra ba r la
cla s e
Clase 0 8 . Clase 0 9 . Clase 1 0 .

Ruta de avance Bucle for Diccionarios


1. Pre-Entrega del Proyecto Final 1. Control de flujo: bucles for 1. Diccionarios: uso y métodos
Integrador. 2. Slices de listas. esenciales.
2. Menú de opciones. 2. Uso de diccionarios como
3. Pedir, procesar y mostrar medio de almacenamiento
datos. temporal de datos

Pero antes…

¡Resolvamos los “Ejercicios prácticos”


de la clase anterior!
Bucles for

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.

Su sintaxis es simple y compacta, y consta de tres partes: la palabra


El bucle for recorre cada elemento de la secuencia y
clave for, una variable de iteración que toma el valor de cada elemento
ejecuta un bloque de código para cada uno de ellos, lo
en la secuencia en cada iteración, la palabra clave in, y la secuencia
que lo hace ideal para realizar tareas repetitivas o para
sobre la que se va a iterar.
procesar cada elemento de una colección.
Buc le for c on list as

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"]

for producto in productos:


print("Producto disponible:", producto)

Buc le for c on t uplas


Sabemos que una tupla es similar a una lista, pero con la diferencia de
que es inmutable (no se puede modificar una vez creada). Al igual que
con las listas y cadenas, podemos recorrer una tupla con for: Número: 1
Número: 2
numeros = (1, 2, 3, 4, 5) Número: 3
Número: 4
for numero in numeros: Número: 5
print("Número:", numero)
Buc le for c on st rings
Una cadena de texto en Python es una secuencia de caracteres. Esto significa que,
usando for, podemos recorrerla carácter por carácter. Fíjate que fácil es:
Letra: P
Letra: y
frase = "Python"
Letra: t
Letra: h
for letra in frase:
Letra: o
print("Letra:", letra)
Letra: n

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

for cont in range(15):


print(cont) 0
suma = suma + cont
1
if cont == 3:
break 2
3
print("La suma es:", suma) La suma es: 6
Ej e m p l o 1 : s u m a y p r o m e d i o
Con el bucle for no necesitamos usar contadores, ya que la variable del ciclo puede
asumir esa función. Esto permite escribir algunos programas de una manera más
compacta.
Este programa permite ingresar 5 valores por teclado, obtener su suma y su Ingrese un número: 2
Ingrese un número: 6
promedio: Ingrese un número: 9
Ingrese un número: 15
suma = 0 Ingrese un número: 3
for cont in range(5): La suma es: 35
num= int(input("Ingrese un número: ")) El promedio es: 7.0
suma = suma + num

print('La suma es:',suma)


print('El promedio es:',suma/(cont+1))

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.

total = 0 Ingrese el importe: 4


Ingrese el importe: 9
for i in range(5):
Ingrese el importe: 12
importe = float(input("Ingrese el importe: "))
total = total + importe Ingrese el importe: 15
Ingrese el importe: 6
print("El total de los importes ingresados es:" ,total) El total de los importes
ingresados es: 46.0
¡Vamos a la práctica! ๶

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

Most rar los c ódigos de produc t os ingresados


En un sistema de inventario, cada producto tiene un código que lo identifica. Escribí un programa que permita ingresar
los códigos de 4 productos y luego mostrálos uno por uno, junto con su posición en la lista.
Producto 1: P001
Ejemplo: si los códigos ingresados son "P001", "P002",
Producto 2: P002
"P003", "P004", el programa debe mostrar:
Producto 3: P003
Producto 4: P004

T ip s :
Ɣ Utilizá un bucle for y range() para recorrer los códigos e imprimirlos.

Iniciación con Python


Clase 10 - “Diccionarios”
¡Les damos la bienvenida!
Vamos a comenzar a grabar la clase

Clase 0 9 . Clase 1 0 . Clase 1 1 .

Bucle for Diccionarios Funciones


1. Control de flujo: bucles for 1. Diccionarios: uso y métodos 1. Funciones en Python:
2. Slices de listas. esenciales. definición y uso.
2. Uso de diccionarios como 2. Argumentos y retorno de
medio de almacenamiento valores.
temporal de datos. 3. Funciones que llaman a
funciones.
Pero antes…

¡Resolvamos los “Ejercicios prácticos”


de la clase anterior!

Diccionarios
¿Qu é e s u n d i c c i o n a r i o ?

Ɣ Un diccionario es una estructura de datos que almacena valores asociados a claves.


Ɣ Las claves deben ser únicas y los valores pueden ser de cualquier tipo.
Ɣ Los diccionarios no tienen un orden específico.

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 ?

Los diccionarios se crean usando llaves {}. Y para acceder a


un valor usamos la clave entre corchetes.

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}

print(productos.get("Peras", 0)) # Salida: 30


print(productos.get("Uvas", 0)) # Salida: 0

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

# Se modifica el valor asociado a la clave "Manzanas"


productos["Manzanas"] = 60
El i m i n a r e l e m e n t o s

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)

del productos["Bananas"] {'Manzanas': 50, 'Peras': 30}


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

Ejemplo con .keys():


for clave in productos.keys(): Producto: Manzanas
Producto: Peras
print("Producto:", clave) Producto: Bananas

Ejemplo con .values():


for valor in productos.values(): Cantidad: 50
Cantidad: 30
print("Cantidad:", valor) Cantidad: 20

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.

Ejemplo con .pop():


cantidad_bananas = productos.pop("Bananas", "No hay bananas")
print("Cantidad de bananas eliminada:", cantidad_bananas)
print(productos)

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.

Ejemplo con .clear(): Ejemplo con del:


productos.clear() del productos
print(productos)
# El diccionario ya no existirá después
# Salida: {} # de este punto.

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

inventario = {"Manzanas": 50,"Peras": 30, "Bananas": 40}


Los diccionarios pueden ser usados ventas_dia = {}
para almacenar temporalmente
# Pedimos los 3 productos / cantidad vendidas:
ventas, productos o cualquier conjunto for _ in range(3):
de datos en tus proyectos. producto = input("Ingresá el producto vendido: ")
cantidad_vendida = int(input("Ingresá la cantidad vendida:
"))

# Si el producto está en el inventario, registramos la venta


if producto in inventario:
# Actualizamos el diccionario de ventas
ventas_dia[producto] = cantidad_vendida
else:
print("Producto no encontrado en inventario.")
¡Vamos a la práctica! ๶

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.

Producto: Manzanas, Precio: 100


Producto: Naranjas, Precio: 150
Producto: Peras, Precio: 120

Ejemplo de salida esperada.


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
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:

1. Te permita ingresar el nombre de un producto.


2. Utilice el método .get() para buscar el stock disponible. Si el producto no existe, deberá mostrar un mensaje
diciendo "Producto no encontrado".
3. Si el producto está disponible, mostrará cuántas unidades quedan en stock.

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

Diccionario inicial: Ejemplo de salida esperada:

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!

La resolución del cuestionario es de carácter obligatorio para poder


avanzar en la cursada.

Iniciación con Python


Cla s e 11 - “Funcione s ”
¡Les damos la bienvenida!
Va mos a come nza r a gra ba r la
cla s e

Clase 1 0 . Clase 1 1 . Clase 1 2 .

Diccionarios Funciones Ruta de avance


1. Diccionarios: uso y métodos 1. Funciones en Python: 1. Creamos las funciones
esenciales. definición y uso. necesarias para el Proyecto
2. Uso de diccionarios como 2. Argumentos y retorno de Integrador
medio de almacenamiento valores.
temporal de datos. 3. Funciones que llaman a
funciones.
Pero antes…

¡Resolvamos los “Ejercicios prácticos”


de la clase anterior!

Funciones
¿Qu é e s u n a f u n c i ó n e n Py t h o n ?

En programación una función es un bloque reutilizable de


código.

Utilizar funciones tiene muchas ventajas. Entre otras:


Ɣ Ahorro de tiempo.
Ɣ Organización del código.
Ɣ Mantenimiento más fácil.
Ɣ Evitan la repetición.
Ɣ Mejoran la claridad del código.

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:

# La función se define con def y comienza luego de los “:”


def saludar():
print("Hola, ¡bienvenido!")
Llam ando a una func ión

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!")

saludar() # <-- Aquí invocamos a la función “saludar()”

¿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 con cadenas:


def saludar(nombre):
print("Hola", nombre)

saludar("Ana") # Hola Ana


saludar("Carlos") # Hola Carlos

Argum ent os por defec t o


Los argumentos pueden tener valores “por defecto”, lo que hace más versátiles a las funciones. Esto se consigue igualando los parámetros al
valor que queramos usar por defecto:

Ejemplo:
def saludar(nombre="invitado"):
print("Hola", nombre)

saludar() # Usa el valor por defecto


saludar("Lucía") # Sobrescribe el valor por defecto
Argum ent os nom brados
Podés pasar los argumentos especificando el nombre del parámetro. Esto te permite alterar el orden y hace que el código sea más claro.

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

Veamos un ejemplo básico de una función que devuelve un valor.

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

# Llamamos a la función principal


ventas_totales = calcular_ventas_totales()
print("Las ventas totales son:", ventas_totales
Alc anc e de las variables
Con “alcance de las variables” nos referimos a dónde y cómo podés usar una variable dentro de tu código.
En Python, las variables que se crean dentro de una función tienen un comportamiento especial: solo existen mientras esa función se está
ejecutando. Eso quiere decir que, si creás una variable dentro de una función, no podés usarla afuera de la misma, y una vez que la función
termina, esa variable desaparece.

Variable “local”: def saludar():


mensaje = "Hola, ¿cómo estás?"
print(mensaje)

saludar()
print(mensaje) # Esto va a dar un error

Alc anc e de las variables


Si una variable se crea fuera de una función, esa variable puede usarse tanto fuera como dentro de la función. Se dice que su alcance es
“global”.

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.

Iniciación con Python


Cla s e 12 - “Funcione s y Dicciona rios ”
¡Les damos la bienvenida!
Va mos a come nza r a gra ba r la
cla s e

Clase 1 1 . Clase 1 2 . Clase 1 3 .

Funciones Ruta de avance Bases de Datos


1. Funciones en Python: 1. Creamos las funciones 1. Concepto y utilidad de los
definición y uso. necesarias para el Proyecto módulos en Python
2. Argumentos y retorno de Integrador 2. Introducción a Bases de
valores. Datos.
3. Funciones que llaman a 3. Idea de tabla, campo, índice,
funciones. clave, etc.
Pero antes…

¡Resolvamos los “Ejercicios prácticos”


de la clase anterior!

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:

Ɣ Crear un conjunto de funciones para gestionar un inventario.


Ɣ Utilizar diccionarios para almacenar datos temporalmente.
Ɣ Prepararnos para la implementación del Proyecto Final Integrador (PFI).
¿Po r q u é u s a m o s f u n c i o n e s ?

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!

Definición de una función:


# La función se define con def y comienza luego de los “:”
def saludar():
print("Hola, ¡bienvenido!")

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.

Menú princ ipal

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.

TIP: ¡ El menú principal también puede ser una función!


¡Vamos a la práctica! ๶

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!

La resolución del cuestionario es de carácter obligatorio para poder


avanzar en la cursada.
Iniciación con Python
Clase 13 - “Bases de datos”

¡Les damos la bienvenida!


Vamos a comenzar a grabar la clase
Clase 1 2 . Clase 1 3 . Clase 1 4 .

Ruta de avance Bases de Datos Fundamentos SQL


1. Creamos las funciones 1. Concepto y utilidad de los 1. Instalación y uso del módulo
necesarias para el Proyecto módulos en Python SQLite
Integrador 2. Introducción a Bases de 2. Consultas SQL básicas
datos. desde Python con SQLite
3. Idea de tabla, campo, índice, 3. Consultas SQL básicas:
clave, etc. SELECT, INSERT, UPDATE,
DELETE

Pero antes…

¡Resolvamos los “Ejercicios prácticos”


de la clase anterior!
Módulos

M ó d u l o s e n Py t h o n

Ɣ Un módulo es simplemente un conjunto de funciones


y variables que otros pueden reutilizar.
Ɣ Python viene con muchos módulos incorporados,
que están listos para ser usados sin necesidad de
instalarlos.
Ɣ Los módulos son muy útiles: no necesitamos
reinventar la rueda cada vez que necesitemos hacer
algo.
¿Có m o i m p o r t a r m ó d u l o s ?

Para poder usar un módulo, primero tenemos que importarlo:

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)

raiz = math.sqrt(16) # Calcular la raíz cuadrada de 16


print("La raíz cuadrada de 16 es:", raiz)
El m ó d u l o r a n d o m
El módulo random nos permite generar números aleatorios, lo cual es muy útil en muchos programas para realizar
simulaciones o crear datos de prueba.

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)

colores = ["rojo", "verde", "azul", "amarillo"]


color_aleatorio = random.choice(colores) # Seleccionar un elemento aleatorio de una lista
print("Color aleatorio:", color_aleatorio)

Im port ac ión parc ial


A veces no necesitamos todo el módulo, sino sólo una función específica. En esos casos podemos importar sólo lo que
nos interesa:

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:

Ɣ Permite almacenar información de forma permanente.


Ɣ Proporciona mecanismos para realizar búsquedas, actualizaciones y borrado de datos.
Ɣ Organiza la información en tablas, con campos y registros.
Ɣ Puede utilizar campos clave para facilitar las búsquedas.

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

Tipos de dat os para los c am pos

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:

PRIMARY KEY indica que ese


campo no admite duplicados.
NOT NULL indica que el campo
no puede quedar vacío.
AUTOINCREMENT hace que el ID
se asigne automáticamente cada
vez que se registra un nuevo
producto.

¡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í:

Ɣ Un nombre adecuado para la tabla.


Ɣ Los campos que incluirías en la tabla, sus tipos de datos y por qué.
Ɣ Qué campo sería la clave primaria y por qué.

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.

Tip: Podés usar random.randint() para generar números dentro de un


rango determinado.
Ejercicios prácticos
Optativos | No entregables

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:

Ɣ Utilice el módulo random para generar 10 precios aleatorios entre


$10.00 y $100.00.
Ɣ Redondee los precios generados a dos decimales usando una
función del módulo math.

Iniciación con Python


Clase 14 - “Fundamentos SQL”
¡Les damos la bienvenida!
Vamos a comenzar a grabar la clase

Clase 1 3 . Clase 1 4 . Clase 1 5 .

Bases de Datos Bases de Datos SQLite


1. Concepto y utilidad de los 1. Instalación y uso del módulo 1. Definimos y creamos la base
módulos en Python SQLite de datos
2. Introducción a Bases de 2. Consultas SQL básicas 2. Agregamos a las funciones
datos. desde Python con SQLite creadas antes de las
3. Idea de tabla, campo, índice, 3. Consultas SQL básicas: consultas de SQL
clave, etc. SELECT, INSERT, UPDATE, 3. Revisión del enunciado del
DELETE TFI
Pero antes…

¡Resolvamos los “Ejercicios prácticos”


de la clase anterior!

Fundamentos SQL
¿Qu é e s SQL i t e y p a r a q u é s i r v e ?

Ɣ SQLite es un módulo de Python para gestionar


bases de datos de forma ligera y práctica.
Ɣ Es una base de datos embebida en un solo
archivo.
Ɣ Viene integrada en Python.
Ɣ Permite usar desde Python comandos SQL para
acceder a los datos.
Ɣ Proporciona un mecanismo para la persistencia de
datos.

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.

Pero no debemos olvidar que:


Ɣ Tiene limitaciones en la concurrencia y permite un solo proceso de escritura a la vez.
Ɣ No tiene un sistema de usuarios con roles o permisos avanzados.
Ɣ Su rendimiento disminuye a medida que el tamaño de la base de datos aumenta.
Ɣ Realizar backups en SQLite puede ser más complicado si la base de datos está en uso, ya que el acceso
concurrente durante el proceso de respaldo puede corromper el archivo.
Co n s u l t a s SQL

Las consultas SQL son instrucciones que enviamos a la base de


datos para obtener, modificar o eliminar información. Desde
Python podemos hacerlo mediante el módulo sqlite3.

Cada consulta SQL se compone de un comando o instrucción,


como SELECT, INSERT, UPDATE o DELETE, que especifica
una acción a realizar y puede incluir cláusulas adicionales para
definir detalles de esa acción, como qué datos queremos ver o
cuáles queremos cambiar.

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:

import sqlite3 # Importar el módulo


conexion = sqlite3.connect("base_datos.db") # Conectarse a la base de datos
cursor = conexion.cursor() # Crear un cursor
cursor.execute("SELECT * FROM Personas") # Ejecutar la consulta SELECT
resultados = cursor.fetchall() # Obtener todos los registros
for registro in resultados: # Mostrar los resultados
print("Nombre:", registro[0], "Edad:", registro[1], "Ciudad:", registro[2])
conexion.close() # Cerrar la conexión
SEL ECT c o n WH ERE
Usando la cláusula WHERE, podemos definir una condición o filtro. Supongamos que queremos ver sólo los registros de
personas que viven en "Buenos Aires". En este caso, la consulta se ve así:

import sqlite3 # Importar el módulo


conexion = sqlite3.connect("base_datos.db") # Conectarse a la base de datos
cursor = conexion.cursor() # Crear un cursor
# Ejecutar la consulta SELECT:
cursor.execute("SELECT * FROM Personas WHERE ciudad = 'Buenos Aires'")
resultados = cursor.fetchall() # Obtener todos los registros
for registro in resultados: # Mostrar los resultados
print("Nombre:", registro[0], "Edad:", registro[1], "Ciudad:", registro[2])
conexion.close() # Cerrar la conexión

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:

import sqlite3 # Importar el módulo


conexion = sqlite3.connect("base_datos.db") # Conectarse a la base de datos
cursor = conexion.cursor() # Crear un cursor
# Ejecutar la consulta SELECT, devolviendo solo las columnas nombre y edad:
cursor.execute("SELECT nombre, edad FROM Personas")
resultados = cursor.fetchall() # Obtener todos los registros
for registro in resultados: # Mostrar los resultados
print("Nombre:", registro[0], "Edad:", registro[1], "Ciudad:", registro[2])
conexion.close() # Cerrar la conexión
SEL ECT c o n ORDER B Y
La cláusula ORDER BY ordena los resultados de una consulta alfabéticamente en orden creciente. Si usamos “DESC”, el
orden se invierte. Podés probar el siguiente código:

import sqlite3 # Importar el módulo


conexion = sqlite3.connect("base_datos.db") # Conectarse a la base de datos
cursor = conexion.cursor() # Crear un cursor
# Ejecutar la consulta SELECT, ordenada por nombre de "Z" a "A":
cursor.execute("SELECT * FROM Personas ORDER BY nombre DESC;")
resultados = cursor.fetchall() # Obtener todos los registros
for registro in resultados: # Mostrar los resultados
print("Nombre:", registro[0], "Edad:", registro[1], "Ciudad:", registro[2])
conexion.close() # Cerrar la conexión

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:

import sqlite3 # Importar el módulo


conexion = sqlite3.connect("base_datos.db") # Conectarse a la base de datos
cursor = conexion.cursor() # Crear un cursor
# Insertar un nuevo registro en la tabla Personas
cursor.execute("INSERT INTO Personas (nombre, edad, ciudad) VALUES ('Carlos',
27, 'Tucumán')")
conexion.commit() # Guardar los cambios
conexion.close() # Cerrar la conexión
L a i m p o r t a n c i a d e c o m m i t ()
En SQLite (y en la mayoría de los sistemas de gestión de bases de datos), cuando llevás adelante operaciones como
cursor.execute para insertar, actualizar o eliminar datos, dichas modificaciones no se guardan inmediatamente.. En su
lugar, los cambios se mantienen en una transacción.

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.

import sqlite3 # Importar el módulo


conexion = sqlite3.connect("base_datos.db") # Conectarse a la base de datos
cursor = conexion.cursor() # Crear un cursor
# Actualizar la edad de Ana en la tabla Personas
cursor.execute("UPDATE Personas SET edad = 24 WHERE nombre = 'Ana'")

conexion.commit() # Guardar los cambios


conexion.close() # Cerrar la conexión
El i m i n a n d o d a t o s c o n DEL ET E
Finalmente, el comando DELETE en SQL nos permite eliminar registros de una tabla. Es importante recordar usar la
cláusula WHERE para indicar la condición que deben cumplir los registros a eliminar. Sin ella, borramos toda la tabla.

import sqlite3 # Importar el módulo


conexion = sqlite3.connect("base_datos.db") # Conectarse a la base de datos
cursor = conexion.cursor() # Crear un cursor
# Eliminar los registros con nombre "José" en la tabla Personas:
cursor.execute("DELETE FROM Personas WHERE nombre = 'José'")

conexion.commit() # Guardar los cambios


conexion.close() # Cerrar la conexión

¡Vamos a la práctica! ๶
Ejercicios prácticos
Optativos | No entregables

Agregar m últ iples regist ros


Crea un programa en Python que inserte varios registros en la La lista de tuplas tiene una estructura como la siguiente:
tabla Personas usando una lista de tuplas predefinida. Cada
tupla debe contener un nombre, una edad y una ciudad. nuevas_personas = [
("Esteban", 32, "Mar del Plata"),
Usá un bucle para recorrer la lista e insertar cada persona en
("Valeria", 27, "Bahía Blanca"),
la base de datos. La lista debe tener al menos cinco personas ("Fernando", 41, "Rosario"),
nuevas y al finalizar el programa deben mostrarse todos los ("Carolina", 29, "La Plata"),
registros en la tabla Personas. ("Juan", 35, "Córdoba")
]

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

Desarrollá un programa en Python que elimine todos los


registros en la tabla Personas donde la edad sea menor a 25
años

Al final del programa, mostrá todos los registros restantes


para confirmar que se han eliminado correctamente aquellos
que cumplen con la condición establecida.

También podría gustarte