Download 05 – Estructuras de control en Python 3

Document related concepts
no text concepts found
Transcript
05 – Estructuras de control en Python 3
Diego Andrés Alvarez Marín
Profesor Asociado
Universidad Nacional de Colombia
Sede Manizales
Estructuras de control
●
Hay varios tipos de estructuras de control:
–
Estructuras condicionales o de selección: if
–
Estructuras iterativas o de repetición: for, while
–
Estructuras de emisión y captura de excepciones
2
if else
if condición:
comando1
else:
comando2
comando3
condición
True
False
comando1
comando2
comando3
3
if – elif – else
condicion_1
True
comando_1
False
condicion_2
True
comando_2
False
condicion_3
Pueden haber una o más partes elif. La parte else es opcional.
En Python no existe la instrucción switch­case de otros lenguajes http://en.wikipedia.org/wiki/Switch
_statement
True
comando_3
False
comando_else
comando_4
4
if ­ elif ­ else
Observe
que los ifs se pueden anidar
5
Observe que se ejecutó la línea 7 y que la línea 8 y la 9 no se ejecutaron
6
Estos ifs anidados son equivalentes a los mostrados en el cuadro inferior; sin embargo en el cuadro inferior es mucho más fácil identificar la idea del algoritmo.
7
Expresiones condicionales
expresion_1 if condicion else expresion_2
Es preferible colocar paréntesis para evitar confusiones
8
Expresiones condicionales
9
Ciclo while­else
La parte del else es opcional.
El bloque_1 se ejecuta mientras la condición sea verdadera.
Si condición es o se vuelve falsa, el ciclo termina normalmente y si la parte del else existe, el bloque_2 se ejecuta.
Si el ciclo no termina normalmente (se salió con un break, o con un return, o se lanzó una excepción), la parte del else no se ejecuta.
10
El ciclo mientras:
while­else
condición
True
bloque_1
False
El ciclo while se ejecuta mientras la condición sea verdadera. Si la condición es falsa, se sale del ciclo.
False
bloque_2
break/return
True
bloque_3
11
Implementando el ciclo “repita hasta que” con un while
Uno puede leer este bucle infinito con la salida utilizando el if como un: “repita hasta que (ch = 'Z')”
Se puede utilizar un break para salirse del ciclo
12
13
Evaluación con cortocircuitos
Cuando el primer término de un or es True, Python devuelve True y no evalúa el segundo término
Cuando el primer término de un and es False, Python devuelve False y no evalúa el segundo término
14
for – in
Un iterable es cualquier tipo de datos sobre el cual se puede iterar: cadenas (se itera de letra en letra), listas, tuplas, diccionarios, lo que retorna la función range(), etc.
Aquí “in” no funciona como el operador “in”.
El for­in de Python se asimila mucho al ciclo “for each” de otros lenguajes de programación
15
http://en.wikipedia.org/wiki/Foreach_loop
­i obliga a que se empiece el modo interactivo después de ejecutar el programa
Aquí se creó una copia de la secuencia sobre la cual se está 16
iterando.
Error en el uso de del
18
for en listas
19
Alterando listas dentro de un ciclo for
20
21
Asignación múltiple en un ciclo for
22
for en diccionarios
23
La función range()
El “step” puede ser incluso negativo
Lo que pasa cuando se intenta imprimir un range():
24
25
La función range()
26
break y
else en un ciclo
El break funciona igual que en lenguaje C: se sale inmediatamente del ciclo, sin verificar de nuevo la condición.
El else se ejecuta en un ciclo for después de iterar sobre toda la lista y en un ciclo while cuando la condición se vuelve falsa; no se 27
ejecuta cuando se sale del ciclo con un break
break
break se utiliza para salirse del ciclo actual de un ciclo (for, while).
Si se pone un break dentro de un ciclo, el break solo se sale del ciclo interior, no de los otros ciclos o switchs. 28
29
30
continue
continue usa en ciclos para saltarse el resto del bloque actual y salta de nuevo a la condición del ciclo.
Si se pone un continue dentro de un ciclo anidado, este solo afecta el ciclo interior.
31
continue
El continue se usa en ciclos para saltarse el resto del bloque actual y salta de nuevo a la condición del ciclo.
Si se pone un continue dentro de un ciclo anidado, este solo afecta el ciclo interior.
En un ciclo while obliga a que se ejecute de nuevo la condición y vuelve al principio del ciclo para la nueva iteración
En un ciclo for obliga a que se realice la siguiente 32
iteración.
Ciclos infinitos
33
Ciclos anidados
●
Se pueden utilizar los comandos break y continue para salir de ellos.
34
35
Instrucciones en un solo reglón
36
pass
37
List comprenhensions
38
List comprenhensions
39
Nested list comprenhensions
40
Listas de listas
nested list comprenhension
Set and dict comprenhensions
42
Manejo de excepciones
43
Errores de sintaxis vs. Excepciones
Los errores de sintaxis (SyntaxError) aparecen cuando no se respetó la gramática propia del lenguaje de programación. Se caracterizan por la flecha (^) que indica la posición del error.
Las excepciones aparecen cada vez que el intérprete no sabe como analizar o proceder ante una orden dada (así sea sintácticamente correcta).
44
Consejos de programación y normas de estilo
Diego Andrés Alvarez Marín
Profesor Asociado
Universidad Nacional de Colombia
Sede Manizales
Normas de estilo
Unas normas de estilo en programación, son tan importantes que todas las empresas dedicadas a programación imponen a sus empleados una mínima uniformidad, para facilitar el intercambio de programas y la modificación por cualquier empleado, sea o no el programador inicial. Por supuesto, cada programa debe ir acompañado de una documentación adicional, que aclare detalladamente cada módulo del programa, objetivos, algoritmos usados, ficheros... (ver por ejemplo https://code.google.com/p/google­styleguide/)
No existen un conjunto de reglas fijas para programar con legibilidad, ya que cada programador tiene su modo y sus manías y le gusta escribir de una forma determinada. Lo que sí existen son un conjunto de reglas generales, que aplicándolas, en mayor o menor medida, se consiguen programas bastante 46
legibles. Aquí intentaremos resumir estas reglas.
Normas de estilo en la programación
●
●
●
●
Lo principal es mejorar tanto como se pueda la claridad en el código. El código debe ser leíble por usted mismo (en el futuro) y por otras personas sin dificultad.
Cuando se escriben los programas se debe priorizar la legibilidad del código por encima de todo, incluso sobre la velocidad de ejecución (excepto en aplicaciones muy específicas).
Hay que entender que el código normalmente se escribe una vez, pero se lee decenas de veces.
Sea consistente con su estilo de programación.
Líneas
●
●
●
●
Una línea no debe sobrepasar la columna 80.
Use líneas en blanco para separar el código en párrafos o bloques.
Coloque una instrucción por línea; sin embargo, si el colocar dos o más sentencias en una misma línea mejora la claridad del programa, entonces hágalo así.
Evite líneas muy largas. En vez de esto utilice varias líneas.
Espacios e identaciones
●
●
●
Use sangrados de 4 espacios (configure su editor).
Coloque espacios antes y después de cada operador binario y de cada signo =, así como los espacios separan las palabras en un texto.
En una sentencia que consiste de dos o más líneas, cada línea excepto la primera debe identarse un nivel extra para indicar que es una continuación de la primera.
Nombres de variables
●
Use nombres de variables simples y descriptivos
●
Las constantes se escriben en MAYÚSCULAS.
●
●
●
●
Use el guión bajo _ para mejorar la claridad de los nombres de las variables. Ejemplo: ancho_viga
No use la L minúscula o la O mayúscula como nombres de variables, ya que pueden confundirse con el 1 y el 0 respectivamente.
Los nombres cortos tales como x o y son aceptables cuando su significado es claro y cuando un nombre largo no añadiría información o claridad adicional.
i,j,k se utilizan exclusivamente como contadores en los ciclos for/while/do­while.
Variables
●
●
Evite en lo posible usar variables globales. Utilice en lo posible variables shared o en su defecto pase las variables globales como argumentos a la función.
Declare las variables globales tan cerca al lugar donde las va a utilizar como sea posible.
Comentarios
●
●
●
●
Comente el código mientras programa, no después de terminar de programar.
Después de declarar una variable, escriba un comentario que explique para que sirve esa variable.
Incluya comentarios antes de cada bloque de código. Estos describirán los propósitos del bloque en el cumplimiento de una tarea cohesiva. El uso de nombres significativos en variables y funciones minimizan la necesidad de comentarios.
Procure alinear los comentarios que van en líneas seguidas
Comentarios
●
Antes de definir una función se debe poner un comentario que diga en una línea o dos qué es lo que hacen dichas funciones y se expliquen los parámetros de la misma. Estos comentarios son para que una persona que esté explorando el código pueda entender qué hace una función sin tener que estudiarla en profundidad. Este breve comentario en el encabezado de la función debe apoyarse a su vez en un nombre de función descriptivo.
Planee la estructura de su código
●
●
Antes de comenzar a programar, lo mejor es planear el código que se va a escribir en una hoja de papel.
Distribuya su código en secciones: por ejemplo: sección de entrada de datos, sección de cálculos numéricos, sección de presentación de resultados
Evite hacer Hardcoding
http://en.wikipedia.org/wiki/Hard_coding
El Hard­coding hace referencia a una mala práctica en el desarrollo de programas que que consiste en incrustar datos directamente en el código fuente del programa, en lugar de obtener esos datos de una variable externa, parámetros de la línea de comandos, o un archivo.
Se considera como una mala costumbre de programación ya que requiere la modificación del código fuente cada vez que cambian los datos, cuando lo conveniente sería que el usuario final pudiera cambiar estos detalles fuera del código fuente del programa.
55
El estilo recomendado para hacer programas en Python
https://www.python.org/dev/peps/pep­0008/
●
●
●
Use 4­space indentation, and no tabs. Four spaces are a good compromise between small indentation (allows greater nesting depth) and large indentation (easier to read). Tabs introduce confusion, and are best left out.
Wrap lines so that they don’t exceed 79 characters. This helps users with small displays and makes it possible to have several code files side­by­side on larger displays.
Use blank lines to separate functions and classes, and larger blocks of code inside functions.
●
When possible, put comments on a line of their own.
●
Use docstrings.
56
El estilo recomendado para hacer programas en Python
https://www.python.org/dev/peps/pep­0008/ (lealo!!)
●
●
●
●
●
Use docstrings.
Use spaces around operators and after commas, but not directly inside bracketing constructs: a = f(1, 2) + g(3, 4).
Name your classes and functions consistently; the convention is to use CamelCase for classes and lower_case_with_underscores for functions and methods. Always use self as the name for the first method argument (see A First Look at Classes for more on classes and methods).
Don’t use fancy encodings if your code is meant to be used in international environments. Python’s default, UTF­8, or even plain ASCII work best in any case.
Likewise, don’t use non­ASCII characters in identifiers if there is only the slightest chance people speaking a different language 57
will read or maintain the code.
El Zen de Python
58
El Zen de Python
59
Referencias
●
Wikipedia
●
http://www.inventwithpython.com/
●
http://www.diveintopython3.net/
●
Documentación de Python:
●
–
https://docs.python.org/3/tutorial/index.html
–
https://docs.python.org/3/
Marzal Varó, Andrés; Gracia Luengo, Isabel; García Sevilla, Pedro (2014). Introducción a la programación con Python 3. Disponible en: http://dx.doi.org/10.6035/Sapientia93
60