You are on page 1of 16

Inicio Libros Tutoriales Eventos Foro Buscar

Libros / Python para principiantes / Captulo 2. Estructura y elementos del lenguaje


/ 2.2. Estructuras de Control de Flujo

2.2. Estructuras de Control de


Flujo
Una estructura de control, es un bloque de cdigo que permite agrupar instrucciones de
manera controlada. En este captulo, hablaremos sobre dos estructuras de control:

Estructuras de control condicionales

Estructuras de control iterativas

2.2.1. Identacin
Para hablar de estructuras de control de flujo en Python, es imprescindible primero,
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
hablar de identacin.

Qu es la identacin? En un lenguaje informtico, la identacin es lo que la sangra al


lenguaje humano escrito (a nivel formal). As como para el lenguaje formal, cuando uno
redacta una carta, debe respetar ciertas sangras, los lenguajes informticos, requieren
una identacin.

No todos los lenguajes de programacin, necesitan de una identacin, aunque s, se


estila implementarla, a fin de otorgar mayor legibilidad al cdigo fuente. Pero en el caso
de Python, la identacin es obligatoria, ya que de ella, depender su estructura.

PEP 8: identacin
Una identacin de 4 (cuatro) espacios en blanco, indicar que las instrucciones
identadas, forman parte de una misma estructura de control.

Una estructura de control, entonces, se define de la siguiente forma:

inicio de la estructura de control:


expresiones

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
2.2.2. Encoding
El encoding (o codificacin) es otro de los elementos del lenguaje que no puede omitirse
a la hora de hablar de estructuras de control.

NOTA
El encoding no es ms que una directiva que se coloca al inicio de un archivo Python,
a fin de indicar al sistema, la codificacin de caracteres utilizada en el archivo.

# -*- coding: utf-8 -*-

utf-8 podra ser cualquier codificacin de caracteres. Si no se indica una codificacin


de caracteres, Python podra producir un error si encontrara caracteres extraos:

print "En el gara encontr un and"

Producir un error de sintaxis: SyntaxError: Non-ASCII character[...]

En cambio, indicando el encoding correspondiente, el archivo se ejecutar con xito:

# -*- coding: utf-8 -*-


print "En el gara encontr un and"
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Produciendo la siguiente salida:

En el gara encontr un and

2.2.3. Asignacin mltiple


Otra de las ventajas que Python nos provee, es la de poder asignar en una sola
instruccin, mltiples variables:

a, b, c = 'string', 15, True

En una sola instruccin, estamos declarando tres variables: a , b y c y asignndoles un


valor concreto a cada una:

>>> print a
string
>>> print b
15
>>> print c
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
True

La asignacin mltiple de variables, tambin puede darse utilizando como valores, el


contenido de una tupla:

>>> mi_tupla = ('hola mundo', 2014)


>>> texto, anio = mi_tupla
>>> print texto
hola mundo
>>> print anio
2014

O tambin, de una lista:

>>> mi_lista = ['Argentina', 'Buenos Aires']


>>> pais, provincia = mi_lista
>>> print pais
Argentina
>>> print provincia
Buenos Aires

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
2.2.4. Estructuras de control de flujo condicionales
"[...] Los condicionales nos permiten comprobar condiciones y hacer que nuestro programa se
comporte de una forma u otra, que ejecute un fragmento de cdigo u otro, dependiendo de esta
condicin [...]"

Cita textual del libro Python para Todos de Ral Gonzlez Duque
(http://mundogeek.net/tutorial-python/)

Las estructuras de control condicionales, son aquellas que nos permiten evaluar si una o
ms condiciones se cumplen, para decir qu accin vamos a ejecutar. La evaluacin de
condiciones, solo puede arrojar 1 de 2 resultados: verdadero o falso ( True o False ).

En la vida diaria, actuamos de acuerdo a la evaluacin de condiciones, de manera


mucho ms frecuente de lo que en realidad creemos: Si el semforo est en verde, cruzar
la calle. Si no, esperar a que el semforo se ponga en verde. A veces, tambin evaluamos
ms de una condicin para ejecutar una determinada accin: Si llega la factura de la luz y
tengo dinero, pagar la boleta.

Para describir la evaluacin a realizar sobre una condicin, se utilizan operadores


relacionales (o de comparacin):

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Smbolo Significado Ejemplo Resultado

== Igual que 5 == 7 False

!= Distinto que rojo != verde True

< Menor que 8 < 12 True

> Mayor que 12 > 7 True

<= Menor o igual que 12 <= 12 True

>= Mayor o igual que 4 >= 5 False

Y para evaluar ms de una condicin simultneamente, se utilizan operadores lgicos:

Operador Ejemplo Explicacin Resultado

and 5 == 7 and 7 < 12 False and False False

and 9 < 12 and 12 > 7 True and True True

and 9 < 12 and 12 > 15 True and False False

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
or 12 == 12 or 15 < 7 True or False True

or 7 > 5 or 9 < 12 True or True True

xor 4 == 4 xor 9 > 3 True o True False

xor 4 == 4 xor 9 < 3 True o False True

Las estructuras de control de flujo condicionales, se definen mediante el uso de tres


palabras claves reservadas, del lenguaje: if (si), elif (sino, si) y else (sino).

Veamos algunos ejemplos:

1) Si semforo esta en verde, cruzar la calle. Sino, esperar.

if semaforo == verde:
print "Cruzar la calle"
else:
print "Esperar"

2) Si gasto hasta $100, pago con dinero en efectivo. Si no, si gasto ms de $100 pero
menos de $300, pago con tarjeta de dbito. Si no, pago con tarjeta de crdito.

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
if compra <= 100:
print "Pago en efectivo"
elif compra > 100 and compra < 300:
print "Pago con tarjeta de dbito"
else:
print "Pago con tarjeta de crdito"

3) Si la compra es mayor a $100, obtengo un descuento del 10%.

importe_a_pagar = total_compra
if total_compra > 100:
tasa_descuento = 10
importe_descuento = total_compra * tasa_descuento / 100
importe_a_pagar = total_compra importe_descuento

2.2.5. Estructuras de control iterativas


A diferencia de las estructuras de control condicionales, las iterativas (tambin llamadas
cclicas o bucles), nos permiten ejecutar un mismo cdigo, de manera repetida, mientras
se cumpla una condicin.

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
En Python se dispone de dos estructuras cclicas:

El bucle while

El bucle for

Las veremos en detalle a continuacin.

2.2.5.1. Bucle while


Este bucle, se encarga de ejecutar una misma accin "mientras que" una determinada
condicin se cumpla. Ejemplo: Mientras que ao sea menor o igual a 2012, imprimir la
frase "Informes del Ao ao".

# -*- coding: utf-8 -*-


anio = 2001
while anio <= 2012:
print "Informes del Ao", str(anio)
anio += 1

La iteracin anterior, generar la siguiente salida:

Informes del ao 2001

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Informes del ao 2002
Informes del ao 2003
Informes del ao 2004
Informes del ao 2005
Informes del ao 2006
Informes del ao 2007
Informes del ao 2008
Informes del ao 2009
Informes del ao 2010
Informes del ao 2011
Informes del ao 2012

Si miras la ltima lnea:

anio += 1

Podrs notar que en cada iteracin, incrementamos el valor de la variable que


condiciona el bucle ( anio ). Si no lo hiciramos, esta variable siempre sera igual a 2001 y
el bucle se ejecutara de forma infinita, ya que la condicin (anio <= 2012) siempre se
estara cumpliendo.

Pero Qu sucede si el valor que condiciona la iteracin no es numrico y no puede


open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Pero Qu sucede si el valor que condiciona la iteracin no es numrico y no puede
incrementarse? En ese caso, podremos utilizar una estructura de control condicional,
anidada dentro del bucle, y frenar la ejecucin cuando el condicional deje de cumplirse,
con la palabra clave reservada break :

while True:
nombre = raw_input("Indique su nombre: ")
if nombre:
break

El bucle anterior, incluye un condicional anidado que verifica si la variable nombre es


verdadera (solo ser verdadera si el usuario tipea un texto en pantalla cuando el nombre
le es solicitado). Si es verdadera, el bucle para ( break ). Sino, seguir ejecutndose hasta
que el usuario, ingrese un texto en pantalla.

2.2.5.2. Bucle for


El bucle for, en Python, es aquel que nos permitir iterar sobre una variable compleja,
del tipo lista o tupla:

1) Por cada nombre en mi_lista, imprimir nombre

mi_lista = ['Juan', 'Antonio', 'Pedro', 'Herminio']


for nombre in mi_lista:

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
print nombre

2) Por cada color en mi_tupla, imprimir color:

mi_tupla = ('rosa', 'verde', 'celeste', 'amarillo')


for color in mi_tupla:
print color

En los ejemplos anteriores, nombre y color, son dos variables declaradas en tiempo de
ejecucin (es decir, se declaran dinmicamente durante el bucle), asumiendo como
valor, el de cada elemento de la lista (o tupla) en cada iteracin.

Otra forma de iterar con el bucle for , puede emular a while :

3) Por cada ao en el rango 2001 a 2013, imprimir la frase "Informes del Ao ao":

# -*- coding: utf-8 -*-


for anio in range(2001, 2013):
print "Informes del Ao", str(anio)

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
Anterior Siguiente
2.1. Elementos del Lenguaje Captulo 3. Mdulos, paquetes y namespaces

Copyright (c) 2011-2013 Eugenia Bahit. La copia y redistribucin de esta pgina se permite bajo los trminos de
la licencia Creative Commons Atribucin NoComercial SinDerivadas 3.0 Unported siempre que se conserve esta
nota de copyright.

INDICE DE CONTENIDOS
1. Preparacin del entorno de desarrollo

Captulo 2. Estructura y elementos del lenguaje

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
2.1. Elementos del Lenguaje

2.2. Estructuras de Control de Flujo

3. Mdulos, paquetes y namespaces

4. Funciones definidas por el usuario

5. Introduccin a la orientacin a objetos

6. Mtodos principales del objeto String

7. Mtodos principales del objeto list

8. Mtodos principales del objeto dict

9. El objeto File: trabajando con archivos

10. Un paseo por los mdulos de la librera estndar

11. Introduccin a MySQL y el lenguaje SQL

12. Bases de datos en Python con MySQL

13. Corriendo aplicaciones Python en la web

14. Enviando e-mails con formato HTML desde Python

3.757
2006-2017 LibrosWeb.es Contacto Novedades Condiciones Privacidad

das online

open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com
open in browser PRO version Are you a developer? Try out the HTML to PDF API pdfcrowd.com

You might also like