Está en la página 1de 31

Introducción a Python

Dia 3
Repaso
Estructuras de control
Las estructuras de control permiten modificar el flujo de ejecución de
las instrucciones de un programa. Se clasifica en:
• Selectivas: Ejecutan un bloque de instrucciones u otro, o saltan a un
subprograma o subrutina según se cumpla o no una condición.
• De simple selección.
• De selección múltiple.
• Iterativas: También llamadas de repetición, inician o repiten un
bloque de instrucciones si se cumple una condición o mientras se
cumple una condición.
• Precondicionales.
• Poscondicionales.
Estructuras de control - Selectivas
En Python, el bloque de código que comprende la estructura debe ir
identado.
if condición:
# si la condición es verdadera
# sentencia
else:
# si la condición es falsa
# sentencia
Estructuras de control - Selectivas
Múltiple Ternario
if condición1: esVerdadero() if condición1 else esFalso()

# sentencia
elif condición2:
# sentencia
elif condición3:
# sentencia
else:
# sentencia
Estructuras de control - Selectivas
Si necesitas comparar un mismo valor con muchas constantes, o
comprobar que tenga un tipo o atributos específicos, la sentencia
match recibe una expresión y compara su valor con patrones sucesivos
dados en uno o más bloques case.
match valor:
case a:
# sentencia
case b:
# sentencia
case _:
# sentencia
Estructuras de control - iterativas
La sentencia “for” de Python itera sobre los ítems de cualquier
secuencia.
Si se necesita iterar sobre una secuencia de números, es apropiado
utilizar la función integrada “range()”, la cual genera progresiones
aritméticas.

for var in range(inicio, final, paso):


# sentencia
Estructuras de control - iterativas
Nota: los bucles deben tener una condición que los termine.

while precondición:
# sentencia
Sentencia “else”en estructuras iterativas
Las sentencias de bucle pueden tener una cláusula else que es ejecutada cuando el
bucle termina:
• después de agotar el iterable (con for)
• cuando la condición se hace falsa (con while).
Este se ejecuta siempre que no exista la sentencia “break” o se ocasione una
excepción en el bucle.
while precondición: for var in range(n):
# sentencia # sentencia
else: else:
# si la condición es falsa # si la condición es falsa
# sentencia # sentencia
Estructuras de control - iterativas
Instrucciones especiales:
• continue: Interrumpe la ejecución de la iteración actual del bucle y
continua con la siguiente iteración.
• break: Interrumpe la ejecución del bucle.
Sentencia “pass”
La sentencia “pass” no hace nada. Se puede usar cuando una sentencia
es requerida por la sintaxis, pero el programa no requiere ninguna
acción.

while precondición: def mi_funcion():


pass pass
Funciones
Definición
Una función es un bloque de código que realiza una tarea específica y puede
ser reutilizado en diferentes partes de un programa.
• Las funciones ayudan a organizar y modularizar el código, lo que facilita su
mantenimiento, reutilización y comprensión.
• Una función generalmente tiene una entrada (llamada argumento o
parámetro) y puede tener una salida (valor de retorno). Toma los
argumentos como entrada, realiza ciertas operaciones y puede devolver un
resultado o efectuar algún cambio en el estado del programa.
• Las funciones se definen con un nombre y pueden recibir cero o más
argumentos. También pueden tener variables locales, que son visibles solo
dentro de la función.
Definición
• La palabra reservada def se usa para definir funciones. Debe seguirle
el nombre de la función y la lista de parámetros formales entre
paréntesis.

def mi_función(param1, paramN):


# Sentencia
return algo

print(mi_función()) → algo
Definición
Las funciones sin la sentencia “return” si retornan un valor, este se
llama “None”, indica que no está predefinido.

def mi_función():
pass

print(mi_función()) → None
Definición
Notación PEP 483: las anotaciones de funciones son información
completamente opcional sobre los tipos usadas en funciones definidas
por el usuario, se almacenan en el atributo __annotations__

def mi_función(param1: tipo, paramN: tipo) -> tipoRetorno:


# Sentencia
return algo

print(mi_función.__annotations__)
Argumentos por omisión
Permite crea una función que puede ser llamada con menos
argumentos de los que permite. Ejemplo:
def divisible(dividendo: float, divisor: float = 2) -> bool:
return dividendo % divisor == 0

print(divisible(5)) → False

Las funciones también pueden ser llamadas usando argumentos de


palabras clave (o argumentos nombrados) de la forma kwarg=value

print(divisible(27,divisor = 3)) → True


Docstring
• La primera sentencia del cuerpo de la función puede ser
opcionalmente una cadena de texto literal; esta es la cadena de texto
de documentación de la función.
• La primera línea debe ser siempre un resumen corto y conciso del propósito
de la función. Se sugiere que esta línea empiece con una letra mayúscula y
termine con un punto.
def mi_funcion():
“””Esta función no hace nada.

Descripcion…
“””
pass
print(mi_función.__doc__)
Alcance de variables
La ejecución de una función introduce una nueva tabla de símbolos usada para las
variables locales de la función.
Todas las asignaciones de variables en la función almacenan el valor en la tabla de
símbolos local, así mismo la referencia a variables mira:
1. La tabla de símbolos local.
2. La tabla de símbolos local de las funciones externas.
3. La tabla de símbolos global.
4. La tabla de nombres predefinidos.
La sentencia “global” permite declarar una variable global dentro de una función:
def mi_función():
global varGlobal
varGlobal = 123
mi_funcion()
print(varGlbal)
Parámetros reales
• Los parámetros reales o “argumentos” para una llamada de función
se introducen en la tabla de símbolos local de la función llamada
cuando ésta se llama
• Los argumentos se pasan usando ”llamada por valor” (el valor es
siempre una referencia al objeto, no el valor del objeto)
Parámetros variables
Se profundizará en la próxima clase sobre su declaración y uso.
• Permiten obtener tuplas y diccionarios
• Cuando un parámetro formal esté de la forma **kwargs al final,
recibe un diccionario.
• Cuando un parámetro formal esté de la forma *args , recibe una
tupla conteniendo los argumentos posicionales.

def funcion(arg, *args, **kwargs):


...
Ejercicio
Cálculo del área de un círculo: Crea una función llamada "area_circulo" que reciba
como argumento el radio de un círculo y retorne el área correspondiente. Luego,
pide al usuario que ingrese el radio y muestra el área calculada.

Área = pi x radio^2

Para el número pi, deberá importarlo con from math import pi


Escriba un programa separado para realizar cada uno de estos ejercicios. Guarde
cada programa con un nombre de archivo que siga las convenciones:
• No utilizar espacios, en su lugar utilice guion o guion bajo.
• La extensión del archivo debe terminar en “.py”
Ejercicio
Cálculo del volumen de un cilindro: Crea una función llamada “volumen_cilindro"
que reciba como argumento el radio y la altura del cilindro, debe retornar el
volumen. Luego, pida al usuario que ingrese los datos y muestra el volumen.

Volumen = área x altura.

Escriba un programa separado para realizar cada uno de estos ejercicios. Guarde
cada programa con un nombre de archivo que siga las convenciones:
• No utilizar espacios, en su lugar utilice guion o guion bajo.
• La extensión del archivo debe terminar en “.py”
Ejercicio
Elabore una función que retorne la letra más utilizada en un texto que
obtenga como parámetro, luego permita al usuario ingresar una cadena e
imprima la letra más utilizada.

Escriba un programa separado para realizar cada uno de estos ejercicios.


Guarde cada programa con un nombre de archivo que siga las convenciones:
• No utilizar espacios, en su lugar utilice guion o guion bajo.
• La extensión del archivo debe terminar en “.py”
Funciones lambda
Son pequeñas funciones anónimas que pueden ser creadas con la
palabra reservada “lambda”. Ejemplo:
# Esta función retorna la suma de sus dos parámetros
suma = lambda a, b: a + b
print(suma(3.14, -3))

Son útiles para procesar datos de colecciones.


Funciones recursivas
• Son funciones que se llaman a sí mismas.
• Son muy útiles para resolver problemas que se pueden dividir en
subproblemas más pequeños y similares.
• Pueden usarse para recorrer estructuras de datos (ej. recorrido de
árboles, búsqueda en profundidad).
• Puede utilizarse para resolver cálculos matemáticos (ej. factoriales,
números de Fibonacci)
Funciones recursivas
Una función recursiva generalmente consta de dos partes principales:
• El caso base: Es la condición que detiene la recursión y devuelve un
resultado directo. Sin el caso base, la función se llamaría
indefinidamente y entraría en un bucle infinito.
• El caso general: Es la parte en la que se realiza la llamada recursiva,
dividiendo el problema en subproblemas más pequeños.

def funcion_recursiva(argumentos):
if caso_base:
# Código para el caso base
else:
# Código para el caso general, que incluye la llamada recursiva
Ejercicio
Escribir una función recursiva que reciba un número entero positivo y
devuelva su factorial.

Caso base: 1, si param == 0

Caso gral: param * factorial(param - 1), si param != 0


Escriba un programa separado para realizar cada uno de estos ejercicios.
Guarde cada programa con un nombre de archivo que siga las convenciones:
• No utilizar espacios, en su lugar utilice guion o guion bajo.
• La extensión del archivo debe terminar en “.py”
Ejercicio
Escribir una función recursiva que reciba un número entero positivo y
devuelva el valor de la sucesión de Fibonacci para ese valor.

Caso base: num, si (num == 0) o (num == 1)

Caso gral: fibonacci(n-1) + fibonacci(n-2)


Escriba un programa separado para realizar cada uno de estos ejercicios.
Guarde cada programa con un nombre de archivo que siga las convenciones:
• No utilizar espacios, en su lugar utilice guion o guion bajo.
• La extensión del archivo debe terminar en “.py”
Ejercicio
Conversor de temperatura: Escribe un programa que convierta una temperatura en grados
Celsius a grados Fahrenheit. Crea una función que tome como parámetro la temperatura
en grados Celsius y devuelva la temperatura equivalente en grados Fahrenheit. Luego,
solicita al usuario ingresar una temperatura en grados Celsius y muestra la temperatura
equivalente en grados Fahrenheit.

Formulas: ºF = ºC x 1.8 + 32 ºC = (ºF-32) ÷ 1.8

Escriba un programa separado para realizar cada uno de estos ejercicios. Guarde cada
programa con un nombre de archivo que siga las convenciones:
• No utilizar espacios, en su lugar utilice guion o guion bajo.
• La extensión del archivo debe terminar en “.py”
Próximamente:
EDD - Listas

También podría gustarte