primeros pasos en python 3 parte iiic-itcr.ac.cr/~ausanabria/files/2016iiscursos/... · estructuras...

30
1 Primeros Pasos en Python 3 Parte II Introducción a la programación I semestre, 2016

Upload: others

Post on 23-Aug-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

1

Primeros Pasos en Python 3Parte II

Introducción a la programación

I semestre, 2016

Page 2: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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

Page 3: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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)

Page 4: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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"

Page 5: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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

Page 6: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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

Page 7: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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.

Page 8: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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]

Page 9: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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

Page 10: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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 :(' )

Page 11: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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/

Page 12: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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/

Page 13: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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”

Page 14: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

Referencias y Lecturas Complementarias

● Material suministrado por el profesor Jeff Schmidt, Instituto Tecnológico de Costa Rica. I semestre 2011.

Page 15: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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*

Page 16: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

1

Primeros Pasos en Python 3Parte II

Introducción a la programación

I semestre, 2016

Page 17: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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

Page 18: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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)

Page 19: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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

Page 20: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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.

Page 21: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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

Page 22: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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.

Page 23: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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]

Page 24: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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)

Page 25: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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.

Page 26: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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/

Page 27: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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/

Page 28: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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”

Page 29: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

Referencias y Lecturas Complementarias

● Material suministrado por el profesor Jeff Schmidt, Instituto Tecnológico de Costa Rica. I semestre 2011.

Page 30: Primeros Pasos en Python 3 Parte IIic-itcr.ac.cr/~ausanabria/files/2016IIScursos/... · Estructuras de Repetición: While Mientras una condición se cumpla se llevará a cabo una

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*