primeros pasos en python 3 parte iiic-itcr.ac.cr/~ausanabria/files/2016iiscursos/... · estructuras...
TRANSCRIPT
1
Primeros Pasos en Python 3Parte II
Introducción a la programación
I semestre, 2016
Estructuras de Control
¿Cómo se hace cuando hay restricciones que validar?
… ¿los flujos alternos?
… ¿las acciones repetitivas?
Estructuras de Control
● De decisión
● Repetitivas
Jeff Schmidt Peralta
Estructuras de Decisión
Python provee la estructura if
La decisión está dada por la evaluación de una condición, que tendrá dos posibles estados: Verdadero (True) o Falso (False)
Estructuras de Decisión
Estructura if:
● La lógica es que solo una de las condiciones sea verdadera. En otras palabras que solo un bloque de código sea ejecutado.
#Restricciones: base y alturas mayores que cero
def area_rectangulo(base,altura):
if base > 0 and altura > 0:
area = base * altura
return area
else:
return "Error en las entradas"
Estructuras de Decisión ( if )
● Estructuras if dependientes / independientes
● Las dependientes a veces son llamadas anidadas.
● El punto: independientes deben ser mutuamente excluyentes.
Dependiente
if (condicion1):
cuerpo1
elif (condicion2):
cuerpo2
else:
cuerpo3
Independiente
if (condicion1):
cuerpo1
if (condicion2):
cuerpo2
if (condicion3):
cuerpo3
¡Ei Ingeniero!¿cual es más eficiente?
Bad Boss CC NC-SA ErickHerbert @ Flickr
Ejercicio: Conversión de grados
1. Escriba dos funciones, bien documentas, para convertir grados centígrados a farenheit.
2. Haga un menú para seleccionar cual función desea utilizar el usuario (utilice if)
● Ingrese 1 para convertir centígrados a Farenheit● Ingrese 2 para convertir Farenheit a Centígrados
Formulas:
● Farenheit = 9 /5 * centígrados + 32
● Centígrados: ( Farenheit – 32 ) / 1,8
Más práctica:
● Construya una función para cada una de las conversiones que aparecen en esta tabla y agréguelas al menú: http://es.wikipedia.org/wiki/Grado_Fahrenheit#Conversi.C3.B3n_a_otras_unidades
Manejo de errores
Formas de manejo de errores, programa → programa:
● Por códigos: al finalizar de ejecutar una función o método se retorna un “código de error” para que el programa que invocó pueda decidir cómo reaccionar. Ejemplos de código: -1, “Error01”, None.
● Excepciones: en tiempo de ejecución, son errores que se presentan pero pueden ser “capturados” para que el programa pueda continuar su funcionamiento. Son una técnica más avanzada de programación.
Formas de manejo de errores, programa → usuario:
● Por mensaje: se presenta en pantalla un mensaje que describa la causa del error. Ejemplo: “El valor del radio es negativo”.
* Ambas formas deben combinarse.
Estructuras de Repetición
Cuando los problemas son “pequeños” es posible escribir el código para evaluar cada parámetro.
Sin embargo cuando la complejidad crece se hace necesario contar con elementos que permitan repetir procesos.
La repetición en programación usualmente está asociada con la recursividad e iteración.
En Python se dispone de dos estructuras para trabajar iteración:
● while
● For
while expresion:bloque-1
[else:bloque]
for iterador in iterable:bloque-1
[else:bloque]
Estructuras de Repetición: While
Mientras una condición se cumpla se llevará a cabo una acción.
Estas instrucciones se podrían mapear de con las expresiones cotidianas en español de la forma: “mientras”
Mamá: “mi hijito vaya a la pulpería y espere mientras llega el panadero con pan recién horneado”
¿Cuál es la repetición en este ejemplo de la vida cotidiana?
Es responsabilidad del programador asegurarse que el programa “salga” del ciclo... (¿dónde sucede eso en el ejemplo?)
import time
import random
def ir_por_pan():
print('voy a comprar pan fresco')
while not panadero():
time.sleep(1)
print('Estoy esperando...')
print('Ya voy para la casa con pan fresco' )
def panadero():
num = random.randint(1, 5)
print('\t\t numero:',num)
if num == 3: return True
else: return False
Estructuras de Repetición: For
Hasta que una condición se cumpla se llevará a cabo una acción.
Estas instrucciones se podrían mapear de con las expresiones cotidianas en español de la forma: “hasta”
Mamá: “mi hijito vaya a la pulpería y espere hasta 5 minutos a ver si llega el panadero con pan recién horneado, sino se viene”
¿Cuál es la repetición en este ejemplo de la vida cotidiana?
Note: tanto el while como el for (como la recursión) son equivalentes y prácticamente iguales. Los detalles que cambian son principalmente sintácticos.
import time
import random
def ir_por_pan_hasta(espera):
print('voy a comprar pan fresco')
compre_pan = False
for espera in range(0,espera):
if panadero():
compre_pan = True
print('compré pan fresco :)' )
break
else:
print('No estaba el panadero')
print('Estoy esperando...')
time.sleep(1)
if compre_pan == False:
print('No pude comprar pan :(' )
Estilos de Codificación
En Python existen los PEP (Python Enhancement Proposal). [PEP-8]
● Identación: usar 4 espacios en blanco, sin tabulación.
● Líneas de código menos con menos 79 caracteres
● Espacios en blanco (líneas): para separar funciones y para separar bloques grandes de código.
● Para funciones: nombre_de_la_funcion
● Para nombres de clase: NombreClase (OO)
Recomendación: buscar el PEP-8 y darle un vistazo. (tareas programadas)
http://www.python.org/dev/peps/pep-0008/
Más Información
Estructuras de Control:
● IF: http://docs.python.org/release/3.1.3/tutorial/controlflow.html#if-statements
● FOR: http://docs.python.org/release/3.1.3/tutorial/controlflow.html#for
PEP-8: http://www.python.org/dev/peps/pep-0008/
Ejercicios con Números (estructuras de decisión)
Escriba una función que reciba un número y retorne el número de dígitos de éste. (utilice // y %). Restricción: el número (entrada) no puede tener más de 4 dígitos.
● num_digitos(entrada) → salida
● num_digitos(1234) → 4
● num_digitos(789) → 3
Escriba un programa para 'componer' números a partir de sus entradas. Recibirá tres parámetros y devolverá la composición. (utilice * y +)
● forma_num(digito1,digito2,digito3) → salida
● forma_num(1,2,3) → 123
● forma_num()
Escriba una función que reciba un número de 3 dígitos y los retorne sumados. (puede utilizar la función num_digitos para validar)
● Suma_digitos(numero) → salida
● Suma_digitos(789) → 24
● suma_digitos(70) → “Error”
Referencias y Lecturas Complementarias
● Material suministrado por el profesor Jeff Schmidt, Instituto Tecnológico de Costa Rica. I semestre 2011.
18
Las presentaciones para el curso IC-1800: "Introducción a la Programación" por Ing. En Computación Alajuela se distribuyen bajo una
Licencia Creative Commons Atribución-Compartir Igual 3.0 Costa Rica.
http://creativecommons.org/licenses/by-sa/3.0/cr/http://creativecommons.org/licenses/by-sa/3.0/cr/ *La licencia de la presentación no cubre las imágenes utilizadas*
1
Primeros Pasos en Python 3Parte II
Introducción a la programación
I semestre, 2016
Estructuras de Control
¿Cómo se hace cuando hay restricciones que validar?
… ¿los flujos alternos?
… ¿las acciones repetitivas?
Estructuras de Control
● De decisión
● Repetitivas
Jeff Schmidt Peralta
Estructuras de Decisión
Python provee la estructura if
La decisión está dada por la evaluación de una condición, que tendrá dos posibles estados: Verdadero (True) o Falso (False)
Estructuras de Decisión
Estructura if:
● La lógica es que solo una de las condiciones sea verdadera. En otras palabras que solo un bloque de código sea ejecutado.
#Restricciones: base y alturas mayores que cero
def area_rectangulo(base,altura):
if base > 0 and altura > 0:
area = base * altura
return area
else:
return "Error en las entradas"
Ver archivo ejercicio-semana04.py
Estructuras de Decisión ( if )
● Estructuras if dependientes / independientes
● Las dependientes a veces son llamadas anidadas.
● El punto: independientes deben ser mutuamente excluyentes.
Dependiente
if (condicion1):
cuerpo1
elif (condicion2):
cuerpo2
else:
cuerpo3
Independiente
if (condicion1):
cuerpo1
if (condicion2):
cuerpo2
if (condicion3):
cuerpo3
¡Ei Ingeniero!¿cual es más eficiente?
Bad Boss CC NC-SA ErickHerbert @ Flickr
Las dependientes son más eficientes porque evitan estar haciendo evaluaciones que podrían ser innecesarias.
Ejercicio: Conversión de grados
1. Escriba dos funciones, bien documentas, para convertir grados centígrados a farenheit.
2. Haga un menú para seleccionar cual función desea utilizar el usuario (utilice if)
● Ingrese 1 para convertir centígrados a Farenheit● Ingrese 2 para convertir Farenheit a Centígrados
Formulas:
● Farenheit = 9 /5 * centígrados + 32
● Centígrados: ( Farenheit – 32 ) / 1,8
Más práctica:
● Construya una función para cada una de las conversiones que aparecen en esta tabla y agréguelas al menú: http://es.wikipedia.org/wiki/Grado_Fahrenheit#Conversi.C3.B3n_a_otras_unidades
Manejo de errores
Formas de manejo de errores, programa → programa:
● Por códigos: al finalizar de ejecutar una función o método se retorna un “código de error” para que el programa que invocó pueda decidir cómo reaccionar. Ejemplos de código: -1, “Error01”, None.
● Excepciones: en tiempo de ejecución, son errores que se presentan pero pueden ser “capturados” para que el programa pueda continuar su funcionamiento. Son una técnica más avanzada de programación.
Formas de manejo de errores, programa → usuario:
● Por mensaje: se presenta en pantalla un mensaje que describa la causa del error. Ejemplo: “El valor del radio es negativo”.
* Ambas formas deben combinarse.
Vamos a trabajar con el manejo de errores por código, utilizando “ErrorXX” como código.
Solicitaremos que siempre se valide si la función invocada retorna None y en ese caso mostrar un mensaje que diga “error desconocido”.
Prestar atención a aquellos estudiantes que no hagan return, pues esos casos (al validar la respuesta) el programa indicará error.
Estructuras de Repetición
Cuando los problemas son “pequeños” es posible escribir el código para evaluar cada parámetro.
Sin embargo cuando la complejidad crece se hace necesario contar con elementos que permitan repetir procesos.
La repetición en programación usualmente está asociada con la recursividad e iteración.
En Python se dispone de dos estructuras para trabajar iteración:
● while
● For
while expresion:bloque-1
[else:bloque]
for iterador in iterable:bloque-1
[else:bloque]
Estructuras de Repetición: While
Mientras una condición se cumpla se llevará a cabo una acción.
Estas instrucciones se podrían mapear de con las expresiones cotidianas en español de la forma: “mientras”
Mamá: “mi hijito vaya a la pulpería y espere mientras llega el panadero con pan recién horneado”
¿Cuál es la repetición en este ejemplo de la vida cotidiana?
Es responsabilidad del programador asegurarse que el programa “salga” del ciclo... (¿dónde sucede eso en el ejemplo?)
import time
import random
def ir_por_pan():
print('voy a comprar pan fresco')
while not panadero():
time.sleep(1)
print('Estoy esperando...')
print('Ya voy para la casa con pan fresco' )
def panadero():
num = random.randint(1, 5)
print('\t\t numero:',num)
if num == 3: return True
else: return False
* La repetición es la espera (solo la espera)
* se sale del programa en: not panadero()
→ cuando esa función retorne un valor de verdadero. (eso sucede en este ejemplo cuando el azar nos favorezca, pero técnica el programados si se aseguró de que se saliera del ciclo)
Estructuras de Repetición: For
Hasta que una condición se cumpla se llevará a cabo una acción.
Estas instrucciones se podrían mapear de con las expresiones cotidianas en español de la forma: “hasta”
Mamá: “mi hijito vaya a la pulpería y espere hasta 5 minutos a ver si llega el panadero con pan recién horneado, sino se viene”
¿Cuál es la repetición en este ejemplo de la vida cotidiana?
Note: tanto el while como el for (como la recursión) son equivalentes y prácticamente iguales. Los detalles que cambian son principalmente sintácticos.
import time
import random
def ir_por_pan_hasta(espera):
print('voy a comprar pan fresco')
compre_pan = False
for espera in range(0,espera):
if panadero():
compre_pan = True
print('compré pan fresco :)' )
break
else:
print('No estaba el panadero')
print('Estoy esperando...')
time.sleep(1)
if compre_pan == False:
print('No pude comprar pan :(' )
* La repetición es la espera y la pregunta. Siempre espera y pregunta.
* se sale del programa cuando la cantidad de intentos por esperar se haya agotado (espera) o cuando ya haya llegado el panadero.
Estilos de Codificación
En Python existen los PEP (Python Enhancement Proposal). [PEP-8]
● Identación: usar 4 espacios en blanco, sin tabulación.
● Líneas de código menos con menos 79 caracteres
● Espacios en blanco (líneas): para separar funciones y para separar bloques grandes de código.
● Para funciones: nombre_de_la_funcion
● Para nombres de clase: NombreClase (OO)
Recomendación: buscar el PEP-8 y darle un vistazo. (tareas programadas)
http://www.python.org/dev/peps/pep-0008/
Más Información
Estructuras de Control:
● IF: http://docs.python.org/release/3.1.3/tutorial/controlflow.html#if-statements
● FOR: http://docs.python.org/release/3.1.3/tutorial/controlflow.html#for
PEP-8: http://www.python.org/dev/peps/pep-0008/
Ejercicios con Números (estructuras de decisión)
Escriba una función que reciba un número y retorne el número de dígitos de éste. (utilice // y %). Restricción: el número (entrada) no puede tener más de 4 dígitos.
● num_digitos(entrada) → salida
● num_digitos(1234) → 4
● num_digitos(789) → 3
Escriba un programa para 'componer' números a partir de sus entradas. Recibirá tres parámetros y devolverá la composición. (utilice * y +)
● forma_num(digito1,digito2,digito3) → salida
● forma_num(1,2,3) → 123
● forma_num()
Escriba una función que reciba un número de 3 dígitos y los retorne sumados. (puede utilizar la función num_digitos para validar)
● Suma_digitos(numero) → salida
● Suma_digitos(789) → 24
● suma_digitos(70) → “Error”
Referencias y Lecturas Complementarias
● Material suministrado por el profesor Jeff Schmidt, Instituto Tecnológico de Costa Rica. I semestre 2011.
18
Las presentaciones para el curso IC-1800: "Introducción a la Programación" por Ing. En Computación Alajuela se distribuyen bajo una
Licencia Creative Commons Atribución-Compartir Igual 3.0 Costa Rica.
http://creativecommons.org/licenses/by-sa/3.0/cr/http://creativecommons.org/licenses/by-sa/3.0/cr/ *La licencia de la presentación no cubre las imágenes utilizadas*