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 switchcase 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 whileelse 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: whileelse 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 forin 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/googlestyleguide/) 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/dowhile. 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 Hardcoding 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/pep0008/ ● ● ● Use 4space 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 sidebyside 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/pep0008/ (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, UTF8, or even plain ASCII work best in any case. Likewise, don’t use nonASCII 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