LaTeX – Más cajas de texto horizontales

Objetivo: presentar con más profundidad los comandos que permiten crear cajas horizontales en LaTeX.

En el artículo anterior introdujimos el modo LR y mostramos el comando mbox, que activaba ese modo para la creación de una sencilla caja horizontal. Hoy profundizaremos presentando unos comandos que nos permitirán unos diseños más avanzados.

Si recuerdas, mbox es un sastre que crea un traje perfectamente a medida, una caja adaptada rigusoramente al texto que se especifica como parámetro. Pero es un traje invisible: en el resultado final puede que ni siquiera seamos capaz de diferenciar la existencia de la caja. Y es que el comando mbox cumple su misión sin necesidad de llamar la atención.

Para hacer visible nuestra caja LR, LaTeX nos ofrece el comando fbox que, al igual que mbox, crea una contenedor del tamaño exacto del texto, pero con la particularidad de que aparecece encuadrado en un marco.

mascajaslatex-1

\documentclass{article}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}
\usepackage{parskip}

\begin{document}
Si eres músico, es importante que, de cuando en cuando, 
acudas al otorrinolaringólogo a revisar tu audición.

Si eres músico, es importante que, de cuando en cuando, 
acudas al \mbox{otorrinolaringólogo} a revisar tu audición.

Si eres músico, es importante que, de cuando en cuando, 
acudas al \fbox{otorrinolaringólogo} a revisar tu audición.
\end{document}

En el primer párrafo, la palabra otorrinolaringólogo está escrita con normalidad, sin caja, permitiendo a LaTeX dividirla, como sucede en el ejemplo, para una mejor presentación. En los párrafos segundo y tercero se enmarca con mbox y fbox, respectivamente, preservando su longitud total y evitando así su división.

Es posible también arreglar el traje y no cortarlo necesariamente a medida, sino a la longitud que queramos, aún pudiéndonos quedar paticortos o con los bajos arrastrando por el suelo.

El comando makebox es una variante de mbox que permite crear una caja de la anchura especificada, pudiendo indicar, además, el tipo de justificación que tendrá el texto dentro de ella:

\makebox[anchura][justificación]{texto}

Observa, por el corchete, que tanto anchura como justificación son opcionales.

En el parámetro anchura introducimos una medida de longitud (es importante no olvidar las unidades junto al valor numérico). En justificación podemos indicar l, r o c para expresar justificación izquierda (l), derecha (r) o centrado (c). El valor por omisión, si no se indica nada, es c, apareciendo el texto centrado en la caja.

Un ejemplo nos ayudará a entenderlo mejor:

mascajaslatex-2

\begin{document}
Ya no echan series como \mbox{La casa de la pradera}, 
es una verdadera lástima.

Ya no echan series como \makebox[6cm][c]{La casa de la pradera}, 
es una verdadera lástima.

Ya no echan series como \makebox[6cm][l]{La casa de la pradera}, 
es una verdadera lástima.

Ya no echan series como \makebox[6cm][r]{La casa de la pradera}, 
es una verdadera lástima.
\end{document}

El primer párrafo hace uso de mbox, ajustando la caja a la medida del texto. En los siguientes establecemos una anchura de 6 cm, observando su justificación centrada, izquierda o derecha.

La caja creada tiene anchura suficiente para acoger el texto que contiene, pero podría darse el caso de que no. Observa qué sucede si el traje se nos queda corto:

mascajaslatex-3

\begin{document}
Ya no echan series como \makebox[2cm][c]{La casa de la pradera}, 
es una verdadera lástima.

Ya no echan series como \makebox[2cm][l]{La casa de la pradera}, 
es una verdadera lástima.

Ya no echan series como \makebox[2cm][r]{La casa de la pradera}, 
es una verdadera lástima.
\end{document}

La caja tiene una anchura de 2cm, quepa o no quepa su contenido en ella. LaTeX la considera como si de un único carácter se tratase, escribiendo el siguiente justo a continuación de la caja, lo que explica la superposición de texto.

Naturalmente, al igual que sucedía con mbox, el comando makebox tiene su versión con marco: framebox.

mascajaslatex-4

\begin{document}
Ya no echan series como \framebox[6cm][c]{La casa de la pradera}, 
es una verdadera lástima.

Ya no echan series como \framebox[6cm][l]{La casa de la pradera}, 
es una verdadera lástima.

Ya no echan series como \framebox[6cm][r]{La casa de la pradera}, 
es una verdadera lástima.
\end{document}

Para finalizar, si eres un usuario de LaTeX inquieto debes saber qué hay dos longitudes que permiten controlar la estética de estas cajas. Puedes regular el ancho del marco con fboxrule y su separación del texto con fboxsep. Al igual que otras longitudes LaTeX, su valor se establece con el comando setlength, del que creo haber hablado ya en alguna que otra ocasión.

mascajaslatex-5

\begin{document}
\setlength{\fboxrule}{1mm}
\setlength{\fboxsep}{6mm}
Ya no echan series como \framebox[6cm][c]{La casa de la pradera}, 
es una verdadera lástima.

\setlength{\fboxrule}{4mm}
\setlength{\fboxsep}{6mm}
Ya no echan series como \framebox[6cm][l]{La casa de la pradera}, 
es una verdadera lástima.

\setlength{\fboxrule}{.1mm}
\setlength{\fboxsep}{0mm}
Ya no echan series como \framebox[6cm][r]{La casa de la pradera}, 
es una verdadera lástima.
\end{document}

Fíjate en el último ejemplo, con un parámetro de separación nulo (aunque sea cero es preceptivo el uso de unidades): el marco aparece ajustado al límite más alto y bajo de los caracteres contenidos (letras L y p).

A lo largo de los años que llevo trabajando con LaTeX nunca he dejado de aprender, se trate de un comando nativo o de uno englobado en un paquete que extiende su funcionalidad. Cuidadosamente, he ido construyendo mi propio manual de referencia con cada pieza que he ido encontrando en el camino. El universo LaTeX es casi inconmensurable y recomiendo encarecidamente que hagas lo mismo. Si las cajitas de este artículo no forman parte aún de tu repertorio de técnicas, toma buena nota de ellas.

Javier Montero Gabarró


LaTeX – Más cajas de texto horizontales


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Índice completo de artículos relacionados con \LaTeX.

Construcción de acordes – 25: Power Chords

Objetivo: ilustrar la formación del acorde de quinta, también conocido como Power Chord.

Un amable lector del blog me preguntaba hace unos días por la formación de este tipo de acordes, apreciando su ausencia en la tabla de referencia de la serie dedicada a su construcción. Es cierto que, para muchos, el power chord, o acorde de quinta, no es digno de ser clasificado como acorde, aunque aquí no le haremos ese feo. Ligado indefectiblemente a determinados estilos musicales y al uso de guitarras eléctricas con fuerte distorsión, qué sería de nuestra historia musical sin su potencia expresiva.

Su formación es muy simple:

Power Chord (acorde de quinta): 1 – 5

No es más que la fundamental y una quinta justa sobre ella.

La notación no ofrece ningún misterio, tampoco: agregamos el número 5 a la letra de la nota fundamental (C5, Bb5, …).

Repetiremos en primer lugar el procedimiento de cálculo que hemos empleado en los restantes acordes de la serie aunque, dada su sencillez, facilitaré a continuación un método más rápido alternativo.

Hallemos, por ejemplo, las notas que integran los acordes C5 y Bb5.

Comenzamos, como siempre, registrando las respectivas escalas mayores, Do mayor y Si bemol mayor:

Do mayor: C – D – E – F – G – A – B
Si bemol mayor: Bb – C – D – Eb – F – G – A

Tomamos los grados indicados en la fórmula, esto es, el 1 y el 5:

C5: C – G
Bb5: Bb – F

Pero para esta simple operación no era necesario tanto despliegue. Por si aún no estuvieras habituado a contar quintas justas de una forma rápida voy a explicarte cómo hacerlo. Tienes a tu disposición, también, en el blog, los siete artículos, entre teóricos y prácticos, dedicados a la formación de intervalos en general.

Basta con saber que una quinta justa a partir de cualquier nota natural (es decir, sin sostenidos ni bemoles), es otra nota natural, a excepción de la construida sobre SI. En efecto, la distancia entre SI y su quinta natural, FA, es una quinta disminuida. Cuenta los semitonos que hay entre ambas y verás que te salen seis, en vez de los siete que constituyen la quinta justa, que seria FA# en este caso.

De modo que calcular quintas justas no es más que contar hasta cinco teniendo en cuenta lo explicado anteriormente. Calculemos unas cuantas:

C5

Contamos 5 sobre DO (incluyéndolo): DO – RE – MI – FA – SOL

La quinta es SOL, y como DO es natural, la quinta justa también lo es.

C5: C – G

Eb5

Contamos cinco sobre MI (nos olvidamos del bemol de momento, hasta la segunda parte del cálculo): E – F – G – A – B

La quinta es SI, que además es justa. Pero como la nota inicial real, MI bemol, está un semitono por debajo de MI, a la nota SI obtenida le quitamos otro semitono también, de modo que:

Eb5: Eb – Bb

Bb5

Contamos 5 sobre SI (nos olvidamos del bemol, de momento): B – C – D – E – F. Ahora bien, hemos dicho que la quinta justa sobre una nota natural es natural a excepción de SI. De modo que la quinta justa sobre SI es FA sostenido en lugar de FA natural. Como la nota original era SI bemol (un semitono por debajo de SI), bajamos un semitono la quinta obtenida, FA#, obteniendo FA natural:

Bb5: Bb – F

Cuanto antes te acostumbres a contar quintas sin apenas pensar mejor. Son la base del círculo de quintas, que no consiste más que en poner en círculo quintas sucesivas: C, G, D, A, E, B, F#/Gb, C#/Db, G#/Ab, D#/Eb, A#/Bb, E#/F.

Veremos con más detalle el círculo de quintas y algunas de sus aplicaciones en otro artículo del blog. Ahora, lo que me han entrado ganas es de coger la guitarra, saturar el ampli y hacer mucho, mucho ruido. Celestial o demoníaco, a gusto de cada uno.

Javier Montero Gabarró


Construcción de acordes – 25: Power Chords


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Tabla de referencia de construcción de acordes.


Índice de todos los artículos de armonía.

10Km City Run RFEA Sevilla 2014

Sevilla - Street Run - SmallUna carrera especial que cada año espero con ilusión. El circuito anteriormente denominado Divina Pastora cambia de patrocinadores y ahora es 10Km City Run, haciendo escala en ciudades como Sevilla, Madrid (23/3), Oviedo (30/3), Valladolid (27/4), Mataró (31/5), Palma de Mallorca (7/6), Albacete (14/6) y Valencia (29/6).

Es especial por diversos motivos. Por un lado, es la carrera con la que abro oficialmente la temporada cada año, en un momento del invierno en el que en Sevilla ya casi huele a primavera. El recorrido es todo un lujo: comienza y termina el el Parque de María Luisa, bordeando completamente el centro histórico de la ciudad. Por si fuera poco, el trazado es completamente llano lo que, unido a la suave temperatura, hace que se junten las condiciones propicias para todos aquellos que deseen batir su marca personal en esta distancia.

Según la organización, el número de inscritos ha sido 1200, lo que me resulta quizás bajo comparándolo con otras ediciones anteriores. Posiblemente los doce euros de inscripción hayan echado atrás a más de uno. O tal vez tampoco haya hecho demasiada gracia tener que desplazarse hasta Mairena del Aljarafe para recoger el dorsal (encareciendo más el asunto). ¿Quién dice que correr es un deporte barato? Echad cuentas de lo que os podéis gastar al año en carreras, por no hablar, por supuesto, de la equipación.

Para plantear la carrera recurro, como hago habitualmente, al Virtual Partner de mi ForeRunner, que he puesto a correr a 5:30/Km. Mi objetivo es dejarlo atrás, aunque sólo sea por un metro, lo que me garantiza terminar la carrera en menos de 55 minutos. Ese ha sido el objetivo.

Salgo muy fuerte (subjetivamente hablando, desde luego), a 4:50/Km (esto sí es objetivo), dejando entre mi compañero virtual y yo una separación de un centenar de metros en muy poco tiempo. Esto es psicológicamente importante para mí. Me gusta tener margen suficiente entre ambos desde el primer momento. Si en algún momento las cosas se ponen mal, siempre puedo devolver algo de la ventaja adquirida.

Freno un poco, pero no tanto para dejar de ir siempre ganando metros. Activo el modo Sufrimiento ON. El resto es una cuestión de paciencia, dejando que los minutos y los kilómetros vayan sucediéndose uno tras otro.

Es curioso este deporte. Sufrimos desde el momento que salimos hasta que llegamos a la meta. Dejar de hacerlo sería tan sencillo como bajar el ritmo. Bastaría emplear un minuto más en cada kilómetro y garantizaríamos una carrera cómoda. Pero no es una opción; simplemente, no podemos. Activamos el piloto automático y aceptamos con resignación el sufrimiento constante. A nuestro ritmo, seamos corredores de 3:30 o de 6, pero siempre sufrimos.

Concluyo la carrera dejando a mi rival virtual a más de 400 metros tras de mí, lo que me ha supuesto finalizar en un tiempo oficial de 52′ 58″, a un ritmo medio de 5:15/Km. El GPS marcó los diez kilómetros en 52’30», por lo que, para él, la distancia recorrida ha excedido los 10Km en casi un centenar de metros más.

Objetivo cumplido. Marca que ya me garantiza un cajoncito cómodo (sub 55′) en la última carrera del año, la San Silvestre vallecana (otros 20 euros del ala). Corremos juntos un buen número de amigos y familiares, de modo que nos instalamos en el cajón correspondiente al peor tiempo de todos. Ahora les tocará a los demás ponerse las pilas. Lástima que por poco podría haber conseguido el derecho a la pulsera sub 52′. En cualquier caso, el resultado ha sido fantástico, logrando ampliamente el objetivo buscado.

Próxima carrera popular: Nervión – San Pablo, la primera del circuito del IMD en Sevilla. Nos vemos allí, a seguir sufriendo, cada uno a nuestro propio ritmo.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2014/03/10km-city-run-rfea-sevilla-2014/


Puedes consultar el índice completo de artículos pertenecientes a la categoría running.


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta

LaTeX – El modo LR y mbox

Objetivo: presentar el modo LR de LaTeX y el comando mbox para la creación de cajas horizontales.

\LaTeX presenta diferentes modos de operación. Ya conocemos algunos: el modo normal y el matemático.

El modo normal, también conocido como modo párrafo, es el que típicamente utilizamos en nuestros escritos en \LaTeX. La unidad de diseño es el párrafo, regulando los saltos de línea y la presentacíón entre palabras persiguiendo la mejor presentación del bloque. Recordemos que el final de un párrafo se indica mediante una línea en blanco (líneas adicionales no son tenidas en cuenta). El comando par cumple la misma función.

El modo matemático lo utilizamos para la inserción de expresiones matemáticas, como las fórmulas o las ecuaciones. Cuando estamos en él suceden cosas diferentes propias al contexto en el que nos movemos. No hay espacios en blanco, no existen palabras sino que estas se descomponen en sus letras individuales, que ahora se consideran símbolos algebraicos. Como ya sabemos, entramos en el modo matemático con \( o \[ y lo abandonamos con los respectivos \) y \]. Existen también diferentes entornos para esta función.

Pero existe un modo diferente, utilizado también para la inserción de texto, en el que, en oposición al modo vertical normal, sólo hay horizontalidad, escritura de texto de izquierda a derecha que no se partirá verticalmente en líneas. Es el modo LR (Left, Right).

Hay comandos específicos que activan el modo LR y hoy veremos uno de ellos: mbox.

El comando mbox crea una caja con texto en modo LR del tamaño exacto para contener ese texto.

El concepto de caja es esencial porque, para \LaTeX, todo son cajas. Desde cada letra individual, que luego aglutina en estructuras mayores que son las palabras, pasando por las figuras, tablas, ecuaciones, o los mismos párrafos, todo son cajas. Cajas que pueden contener a su vez otras cajas y que luego serán pegadas adecuadamente para su presentación final.

Con el comando mbox creamos una caja horizontal, sin marco, que contiene el texto que hemos facilitado como argumento. La particularidad de esta caja, al estar su contenido en modo LR, es que desconoce lo que es un cambio de línea.

En la presentación final, al no destacar la caja con ningún marco, puede que pase desapercibida al pegarse, como si de un único carácter se tratase, al resto del texto normal.

O puede que no… Observa el resultado del siguiente código al introducir en mbox un texto que excede la anchura del documento:

\documentclass{article}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}
\usepackage{parskip}

\begin{document}
Esta es una caja horizontal muy larga: \mbox{En un lugar de La Mancha, 
de cuyo nombre no quiero acordarme, no ha mucho tiempo que vivía...}. 
El resultado es desastroso.
\end{document}

mbox-1

He capturado la página en pequeño, pero se aprecia como el texto no cabe y se pierde pasado el borde derecho.

Hay que ser muy cuidadoso en esto al utilizar mbox, desde luego. Entonces, ¿qué utilidad práctica nos ofrece este comando?

Puede emplearse, por ejemplo, dentro del modo matemático para introducir una caja horizontal de texto. No obstante, en determinados contextos el resultado no sería el deseado. Como veremos en otro artículo, el paquete amsmath proporciona formas más elegantes para tratar con matemáticas y texto.

Un uso muy común del comando mbox es para prevenir que una palabra sea dividida en un cambio de línea.

Observa el siguiente código y su resultado:

\documentclass{article}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}
\usepackage{parskip}

\begin{document}
Si eres músico, es importante que, de cuando en cuando, 
acudas al otorrinolaringólogo a revisar tu audición.

Si eres músico, es importante que, de cuando en cuando, 
acudas al \mbox{otorrinolaringólogo} a revisar tu audición.
\end{document}

mbox-2

En la primera frase, \LaTeX, inteligentemente, divide la palabra otorrinolaringólogo, optimizando la presentación del párrafo. En la segunda, al incluir la palabra en una caja horizontal, evitamos su partición. Naturalmente, deberíamos tener un motivo que justifique esta decisión, algo que quizás no se aprecie en el ejemplo elegido.

En el siguiente artículo presentaremos otros comandos para crear cajas más sofisticadas que con mbox. Entre tanto, guárdate muy bien este en tu gran cajón de herramientas \LaTeX. Ocupa poco lugar, como un solo carácter.

Javier Montero Gabarró


LaTeX – El modo LR y mbox


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Índice completo de artículos relacionados con \LaTeX.

Python – Y, finalmente, finally

Objetivo: presentar la cláusula finally en el manejo de excepciones en Python.

Imaginemos, por un momento, que soy un perverso programador que, bajo el aspecto de un aparente dócil y simple programa esconde en él una intención oculta. Supongamos que, aprovechándome del deseo de todo el mundo de disponer de una aplicación que permita calcular la división de dos números enteros, intento colar un sutil mensaje subliminal al ejecutarla:

dividendo = int(input('Introduce el dividendo: '))
divisor = int(input('Introduce el divisor: '))
print('El cociente de la división de ambos números es', dividendo//divisor)
print("Viva el Betis manque pierda")

>>> 
Introduce el dividendo: 10
Introduce el divisor: 2
El cociente de la división de ambos números es 5
Viva el Betis manque pierda 

Impresionante, pero no tanto…

Si por un casual introducimos como divisor un cero, la división no podrá realizarse y el programa abortará, muriendo con él también nuestras oscuras pretensiones:

>>> 
Introduce el dividendo: 10
Introduce el divisor: 0
Traceback (most recent call last):
  File "C:/Python33/pruebas.py", line 3, in <module>
    print('El cociente de la división de ambos números es', dividendo//divisor)
ZeroDivisionError: integer division or modulo by zero

En los artículos anteriores presentamos la captura de excepciones en Python, de modo que tenemos recursos para solucionar esto:

try:
    dividendo = int(input('Introduce el dividendo: '))
    divisor = int(input('Introduce el divisor: '))
    print('El cociente de la división de ambos números es', dividendo//divisor)
except:
    print("No ha podido realizarse la operación")
    
print("Viva el Betis manque pierda")

>>> 
Introduce el dividendo: 10
Introduce el divisor: 0
No ha podido realizarse la operación
Viva el Betis manque pierda

Desde luego, esto funciona. La operación de división ha sido protegida con un try/except que, tal como está planteado, intercepta cualquier excepción que pudiera ocurrir. He introducido en el bloque try las dos sentencias input, no sólo la división, pues también ocurriría una excepción si se facilitase un valor no numérico cuando int() intentara la conversión a entero.

El código no fallará ante una eventual división por cero (ZeroDivisionError), la introducción de letras en vez de números (ValueError), o una interrupción con Ctrl-C (KeyboardInterrupt).

Pero no me convence. Quiero emplear mi propio manejador ante una división por cero o la introducción de letras, pero quiero respetar el gestor por omisión que trae Python (el mensaje de error clásico tras abortar el programa) para poder finalizar la ejecución con Ctrl-C si así lo deseo.

Hemos aprendido a interceptar selectivamente las excepciones también:

try:
    dividendo = int(input('Introduce el dividendo: '))
    divisor = int(input('Introduce el divisor: '))
    print('El cociente de la división de ambos números es', dividendo//divisor)
except (ZeroDivisionError, ValueError):
    print("No ha podido realizarse la operación")
    
print("Viva el Betis manque pierda")

Ahora, si dividimos entre cero, salvamos el error y también nuestro mensaje subliminal:

>>> 
Introduce el dividendo: 10
Introduce el divisor: 0
No ha podido realizarse la operación
Viva el Betis manque pierda

Lo mismo si introducimos valores no numéricos:

>>> 
Introduce el dividendo: GOL!!!
No ha podido realizarse la operación
Viva el Betis manque pierda

Pero nuestro gozo en un pozo si abortamos con Ctrl-C:

>>> 
Introduce el dividendo: 
Traceback (most recent call last):
  File "C:/Python33/pruebas.py", line 2, in <module>
    dividendo = int(input('Introduce el dividendo: '))
KeyboardInterrupt

Se rompe la ejecución del programa y, con ello, el Betis pierde.

Para seguir insuflándole ánimos, Python dispone de la claúsula finally en el bloque try. El código que se incluya en ella, apúntate esto bien, se ejecutará siempre, suceda o no suceda una excepción.

En su versión más simple, finally no necesita que haya ningún except:

try:
    dividendo = int(input('Introduce el dividendo: '))
    divisor = int(input('Introduce el divisor: '))
    print('El cociente de la división de ambos números es', dividendo//divisor)
finally:
    print("Viva el Betis manque pierda")

Ahora, pase lo que pase dentro del try, la instrucción del finally se ejecutará siempre. Tanto si sucede algo bueno:

>>> 
Introduce el dividendo: 10
Introduce el divisor: 2
El cociente de la división de ambos números es 5
Viva el Betis manque pierda

Como si no:

>>> 
Introduce el dividendo: 10
Introduce el divisor: 0
Viva el Betis manque pierda
Traceback (most recent call last):
  File "C:/Python33/pruebas.py", line 4, in <module>
    print('El cociente de la división de ambos números es', dividendo//divisor)
ZeroDivisionError: integer division or modulo by zero

Se ejecuta el print del finally y, a continuación, el manejador por omisión se ocupa del tratamiento de la excepción, abortando el programa e informando por qué.

Podemos combinar finally con except también:

try:
    dividendo = int(input('Introduce el dividendo: '))
    divisor = int(input('Introduce el divisor: '))
    print('El cociente de la división de ambos números es', dividendo//divisor)
except (ZeroDivisionError, ValueError):
    print("No ha podido realizarse la operación")
finally:
    print("Viva el Betis manque pierda")

En este caso utilizamos nuestro propio gestor ante una división por cero o la introducción de valores no numéricos, pero mantenemos el que trae por defecto Python para cualquier otra excepción, lo que nos permite abortar el programa con Ctrl- C. El código dentro de la claúsula finally se ejecuta siempre, suceda o no suceda una excepción:

>>> 
Introduce el dividendo: 10
Introduce el divisor: 4
El cociente de la división de ambos números es 2
Viva el Betis manque pierda
>>> ================================ RESTART ================================
>>> 
Introduce el dividendo: 
Viva el Betis manque pierda
Traceback (most recent call last):
  File "C:/Python33/pruebas.py", line 2, in <module>
    dividendo = int(input('Introduce el dividendo: '))
KeyboardInterrupt

El uso típico de la claúsula finally es la realización de tareas de limpieza para que no queden flecos en caso de que se produzca una excepción. Piensa, por ejemplo, en el gesto de cerrar un fichero una vez ha sido abierto para asegurarnos de que, suceda lo que suceda mientras estemos procesando el fichero, siempre quedará perfectamente cerrado.

Dedicaremos el próximo artículo, a modo de resumen, a esquematizar lo que hemos tratado hasta ahora en estos cuatro artículos dedicados a la gestión de excepciones en Python.

Nota: no soy futbolero, ni tengo preferencia por ningún equipo sobre otro, pero sí que admito un cariño y especial admiración por la afición del Betis, tan incondicional, fiel y estoica.

Javier Montero Gabarró


Python – Y, finalmente, finally


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Consulta el índice completo de artículos relacionados con Python.

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies