Python – Capítulo 34: Especificaciones de conversión

Objetivo: Conocer otras especificaciones de conversión para el formato de strings empleando el operador de interpolación (%).

En el capítulo 33 presentamos el operador de interpolación (%), una de las maneras que tiene Python para formatear cadenas de caracteres. A la izquierda del operador figuraba un string en el que insertábamos determinadas especificaciones de conversión; a la derecha, una tupla (o un elemento simple) con los valores que sustituirían a aquellas.

Vimos, además, el especificador de conversión %d para su sustitución por un número entero. Este es semejante a %i y puedes usar uno u otro indistintamente (d es de decimal, entero decimal; la i es de integer).

Vamos a presentar algunos más…

Si, en vez de un entero decimal, quieres convertir el valor a octal, dispones de la especificación %o. Observa la conversión en el siguiente ejemplo:

>>> x=15324
>>> print("%d expresado en octal es %o" % (x, x))
15324 expresado en octal es 35734

Para pasar a hexadecimal puedes elegir entre %x o %X, dependiendo de si lo quieres en mayúsculas o minúsculas:

>>> print ("En hexadecimal es %x, o %X expresado en mayúsculas" % (x, x))
En hexadecimal es 3bdc, o 3BDC expresado en mayúsculas

Para números reales dispones de %f (de float):

>>> x=143.25
>>> print("El valor de x es %f" % x)
El valor de x es 143.250000

No te preocupes ahora por el número de decimales después del punto, pues hablaremos de eso en su momento.

Los números reales también puedes expresarlos en notación científica:

>>> print("que es lo mismo que %e, o bien %E con la E mayúscula" % (x, x))
que es lo mismo que 1.432500e+02, o bien 1.432500E+02 con la E mayúscula

Observa que utilizamos %e o %E dependiendo de si preferimos la e en minúsculas o mayúsculas.

Mira este otro curioso ejemplo con %g:

>>> print("Estas variables son, respectivamente, %g, %g, %g, %g y %g" % (a,b,c,d,e))
Estas variables son, respectivamente, 0.5, 0.05, 0.005, 0.0005 y 5e-05

Lo que está sucediendo es que la especificación %g (de general) representa los números reales inteligentemente. Sólo emplea notación científica cuando el exponente es inferior a -4; en caso contrario los representa en formato decimal. Si quieres la E en mayúsculas, usa %G.

Para representar un carácter simple empleamos %c. Podemos facilitar el carácter así, tal cual, o como número entero, en cuyo caso se efectuará la conversión al carácter correspondiente a ese código en Unicode:

>>> c1='A'
>>> c2=65
>>> print("c1 y c2 son, respectivamente, %c y %c." % (c1, c2))
c1 y c2 son, respectivamente, A y A.

Para interpolar un string disponemos de la especificación %s:

>>> serie='La casa de la pradera'
>>> print('Quién no ha llorado con "%s".' % serie)
Quién no ha llorado con "La casa de la pradera".

Fíjate cómo me las he arreglado para que se impriman las comillas dobles. Al delimitar la cadena en print con comillas simples he podido utilizar las dobles en el interior sin que exista confusión.

Para finalizar voy a plantearte un pequeño problema… Imagina que queremos lograr la siguiente salida:

Puesto que 5 es un entero, la especificación a emplear es %d.

En la que el valor 5 ha sido facilitado por una variable x.

Esto fallaría:

>>> print("Puesto que %d es un entero, la especificación a emplear es %d" % x)
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    print("Puesto que %d es un entero, la especificación a emplear es %d" % x)
TypeError: not enough arguments for format string

El error es claro: hemos incluido dos especificaciones, pero sólo un argumento. La cuestión es que no queremos que el segundo %d sea interpretado como especificación, sino como un carácter normal.

Para lograr esto utilizaremos un tanto por ciento doble: %%

>>> print("Puesto que %d es un entero, la especificación a emplear es %%d" % x)
Puesto que 5 es un entero, la especificación a emplear es %d

El %% indica que ese % no corresponde a una especificación. El resultado es la impresión de un % simple.

Cuando no usamos el operador de interpolación podemos recurrir al % sin necesidad de usar el doble, pues la construcción no ofrece ambigüedades:

>>> print("%d es la especificación de conversión para enteros y %f para reales")
%d es la especificación de conversión para enteros y %f para reales

Y eso es todo por hoy…

>>> bollo = 'bizcocho'
>>> hora = 8
>>> print("Con esto y un %s, hasta mañana a las %d" % (bollo, hora))
Con esto y un bizcocho, hasta mañana a las 8

Javier Montero Gabarró


Python – Capítulo 34: Especificaciones de conversión


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.

MySQL – Datos numéricos de coma fija

Objetivo: Introducir el tipo DECIMAL para la representación de datos numéricos de coma fija en MySQL.

Hemos tratado ya el tipo INTEGER para la introducción de datos numéricos enteros en una tabla MySQL. Pero supongamos que tenemos que definir un campo para almacenar el precio exacto en euros de un determinado artículo; es obvio que necesitamos otro tipo de representación que permita introducir los decimales de los céntimos.

Para poder almacenar numeros con cifras decimales exactas, también conocidos de coma fija (en oposición a los de coma flotante para números reales en general, que trataremos más adelante), MySQL dispone del tipo de datos DECIMAL, que puede simplificarse como DEC.

Su sintaxis es DECIMAL(m,n), donde m es el número máximo de cifras en total (incluyendo la parte decimal) y n es el número de cifras después de la coma.

Por ejemplo; imagínate que sabes que el precio de un artículo en euros siempre será inferior a 100 euros. Es decir, el precio máximo sería 99’99 euros. ¿Cómo representaríamos este tipo de columna?

El número máximo de cifras es cuatro, dos de ellas decimales, por lo que el campo puede definirse como

DECIMAL(4,2)

Esta definición incluye a los números negativos, de modo que el rango de cifras completo que abarca es desde -99’99 hasta 99’99.

Vamos a crear una sencilla tabla de ejemplo para almacenar pedidos en la que incluiremos el nombre de un artículo, la cantidad a pedir y el precio unitario (que acotaremos por debajo de los 1000 euros).

mysql> CREATE TABLE pedidos
    -> (
    -> articulo VARCHAR(25),
    -> cantidad INT,
    -> precio DEC(5,2)
    -> );
Query OK, 0 rows affected (0.06 sec)

Observa cómo he definido el campo precio: he puesto 5 porque es el total de cifras (las tres antes de la coma y las dos después de ella).

Repasemos su estructura:

mysql> DESC pedidos;
+----------+--------------+------+-----+---------+-------+
| Field    | Type         | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| articulo | varchar(25)  | YES  |     | NULL    |       |
| cantidad | int(11)      | YES  |     | NULL    |       |
| precio   | decimal(5,2) | YES  |     | NULL    |       |
+----------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

Con todo lo que hemos visto ya, aunque nos faltan más tipos de campos aún, puedes hacer tus pinitos diseñando tablas. En breve estaremos introduciendo datos ya a esas estructuras vacías…

Javier Montero Gabarró


MySQL – Datos numéricos de coma fija


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


¡Accede al índice con todos los artículos sobre MySQL!

Construcción de acordes – 14: Séptima con quinta disminuida

Objetivo: Presentar el acorde 7(b5), otra alteración posible del acorde de dominante, y aprender a determinar las notas que lo constituyen sobre cualquier fundamental.

En la anterior entrega mostramos cómo podíamos alterar el acorde de dominante aumentando el quinto grado, obteniendo el denominado séptima con quinta aumentada, 7(#5). Pero otra posibilidad, sin que el acorde pierda su función, es disminuir la quinta. Obtendríamos así el acorde de séptima con quinta disminuida, 7(b5).

Como vemos, no es más que un acorde de séptima en el que disminuimos la quinta un semitono. Es decir:

7(b5) –> 1 – 3 – b5 – b7

Con esta fórmula podemos ya calcular la composición absoluta sobre cualquier fundamental.

Por ejemplo, C7(b5):

Partimos, como siempre, de la correspondiente escala mayor,

C – D – E – F – G – A – B – C

y tomamos los grados indicados:

C7(b5) –> C – E – Gb – Bb

Otro ejemplo, A7(b5):

A – B – C# – D – E – F# – G# – A

A7(b5) –> A – C# – Eb – G

Recuerda que en la tabla de referencia de construcción de acordes aparece un resumen con todos los acordes presentados hasta el momento.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2012/05/construccion-de-acordes-14-septima-con-quinta-disminuida/


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

Carrera Popular Sur 2012 – Sevilla

Tercera carrera del circuito de barrios organizado por el IMD en Sevilla. Tras las primeras, dedicadas a San Pablo – Nervión y a Triana-Los Remedios, le ha tocado esta vez el turno al distrito Sur.

No he tenido clara mi participación hasta el último momento. Un desafortunado mal paso esta semana, mientras caminaba por la calle, hizo que se me torciese un tobillo. Pensé que todo quedaría en un susto, pero al día siguiente el dolor era evidente simplemente andando. Afortunadamente, ayer cesaron las molestias y decidí darme una oportunidad e intentar participar en la popular.

La prueba de fuego ha sido durante los minutos de calentamiento que he pasado dando vueltas a la plaza de España, lugar de inicio de la carrera. Si notaba el más mínimo dolor en el tobillo no me situaría en línea de salida.

Pero no fue así, de modo que programé prudentemente a ForeRundy a 5:45 el kilómetro y a las 9:30 de la mañana, aproximadamente, me eché a correr tras el pistoletazo de salida.

La organización nos había advertido por megafonía del cuello de botella que se formaría para abandonar el parque de María Luisa, por lo que mi «compañero virtual» pronto se alzaría con una ventaja de 80 metros.

Mi estrategia sería correr lo sufientemente rápido para ir reduciendo esa distancia muy paulatinamente, sin prisa, aunque tardara varios kilómetros en hacerlo, como así sucedió.

Llegué a sacarle una ventaja máxima de unos 100 metros en la carretera de Su Eminencia, muy cerca ya del estadio del Betis. Desde ese momento, en la avenida de Las Palmeras, devolví parte de la ventaja para dejarla, finalmente, en unos 40 metros a mi favor.

Un termómetro, ya en el último cuarto tramo de la carrera, indicaba una temperatura maravillosa de 25 grados. Recordé como, el año pasado, en la misma prueba, el termómetro nos ofrecía 31 insufribles grados.

Entré en meta, de acuerdo a los resultados publicados oficialmente, en 55′ 48″. El GPS midió 9’81 Km, lo que me ha otorgado un ritmo medio de 5:41/Km.

Endorfinas para la mente, como diría mi amigo Santi, con el que la temporada pasada compartí muchísimos kilómetros en carreras por Sevilla y Cádiz. Hoy, tras varios meses apartado del mundillo por una tendinitis, ha hecho su reaparición magistral.

La siguiente prueba del IMD no será hasta finales de septiembre, con la famosa nocturna del Guadalquivir. Comenzamos ahora unos meses en los que, como todos los de por aquí saben, es prácticamente imposible correr, aunque no descarto hacerlo quizás en sitios más frescos…

Será por opciones.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2012/05/carrera-popular-sur-2012-sevilla/


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 – Capítulo 29: Unidades de longitud

Antes de que comencemos a realizar el ajuste fino del diseño de una página en \LaTeX, es preciso que hablemos algo sobre dimensiones. Voy a mostrarte las cuatro cosas que debes saber sobre las diferentes unidades que te ofrece \LaTeX para expresar longitudes.

Ante todo, hay muchas unidades, la mayoría de las cuales no usarás nunca. Para entender la existencia de algunas deberíamos hablar sobre la historia de la tipografía, mucho antes de la existencia de \LaTeX, algo fuera del alcance de esta serie.

Tienes por ejemplo, el punto (pt), 72’27 de los cuales forman una pulgada (2’54cm). Adobe redondeó exactamente a 72 y definió el punto postscript (bp), también conocido como big point (aunque eso de grande sería discutible, pues es aproximadamente igual al punto clásico). O la pica (pc), equivalente a 12 puntos.

Y las hay esotéricas como el punto Didot (dd) o el Cicero (cc), de las que no diré nada más.

Hay otras magnitudes cuyo tamaño real es relativo al tamaño de la fuente. Por ejemplo, la eme (em), definida como la anchura de una M mayúscula, o la equis (ex), altura de la letra x minúscula. También existe la unidad matemática (mu), decimo octava parte de la eme. Recuerda, son unidades relativas: no es lo mismo una eme en un tipo de letra de 10 puntos que en otro de 12.

En la práctica usarás, sobre todo, nuestras propias medidas de longitud: el centímetro (cm) y el milímetro (mm). Además, si lees textos sobre \LaTeX por Internet te encontrarás con frecuencia, además del punto clásico (pt) la pulgada anglosajona (in).

Para especificar longitudes en \LaTeX, ponemos el valor inmediatamente seguido por las unidades, sin mediar espacio entre ambos. Por ejemplo:

5mm
0.4in Observa el uso de un punto para la parte fraccionaria
-10pt ¡Las longitudes también pueden ser negativas!
0cm ¡Importante: incluso una longitud de cero requiere sus unidades!

Debes saber que \LaTeX se toma muy en serio las unidades de longitud: es extremadamente preciso…

Javier Montero Gabarró


LaTeX – Capítulo 29: Unidades de longitud


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

La fórmula absoluta de una escala musical

Ha llegado el momento de que comencemos a sumergirnos en el fascinante mundo de las escalas musicales. ¿Te suena a chino si te pregunto por una escala Dórica o por una Lidia b7? ¿Te pierdes cuando te «sacan» de una pentatónica menor?

No te preocupes. En los próximos artículos iremos desentrañando gradualmente todos los misterios de la construcción de escalas. Como suele suceder con casi todo, te darás cuenta de que el asunto es mucho más sencillo de lo que aparenta. Los más temidos fantasmas se desvanecen cuando los iluminas.

Pero antes necesitamos algo de terminología y hoy quiero presentarte el concepto de fórmula absoluta de una escala (en oposición al de fórmula relativa, que trataremos más adelante). Una advertencia: esta terminología es la que yo utilizo y emplearé coherentemente a lo largo de toda la serie; no tiene por qué coincidir con la usada por otros músicos. Lo realmente importante es que sepamos de qué estamos hablando más que el nombre que empleemos para referirnos a ello.

Aunque, eventualmente, podré usar los nombres de las notas propias de nuestro sistema musical (Do, Re, Mi…), recurriré con frecuencia a la notación anglosajona por cuestiones de comodidad. En caso de dudas no estaría mal que hicieras clic sobre el enlace para refrescar conceptos.

Realmente, ya sabes lo que es fórmula absoluta de una escala. Te la presenté en el artículo La fórmula secreta de la escala mayor, que te recomiendo que releas antes de seguir. Cuando hablo de fórmula absoluta, me estoy refiriendo precisamente a esa fórmula secreta.

Una fórmula absoluta de una escala no es más que aquella en la que se detalla la distancia en semitonos de cada grado respecto al anterior.

Antes de que alguien me conteste que, si estamos relacionando cada grado relativamente con el anterior, deberíamos llamarla fórmula relativa, diŕe que, evidentemente, es cierto. No obstante, el absolutismo al que me refiero es que no comparo esa escala con ninguna otra, sino simplemente miro en sí misma. Me reservo el término fórmula relativa para cuando estemos comparando dos escalas entre sí. Pero todo a su momento…

Entonces, ya sabes tu primera fórmula absoluta: la de la escala mayor:

Escala mayor: T – T – S – T – T – T – S

que también podrías escribir como:

2 – 2 – 1 – 2 – 2 – 2 – 1

En la que el 1 hace referencia al semitono y el 2 al tono, puesto que un tono son dos semitonos.

Lo fascinante de todo esto es que, conocida la fórmula de una escala, puedes conocer su composición en cualquier tonalidad sin más que realizar un conteo básico de tonos y semitonos. Léete el artículo antiguo La escala mayor en cualquier tonalidad, en el que se detalla todo el proceso aplicado a un tipo de escala en particular: la escala mayor.

Ya has dado el primer paso. Te aseguro que el camino será llano y sin baches, pero tendrás que ir asimilando cada artículo gradualmente. Merece la pena: conocer lo que hay detrás de las escalas, al igual que de los acordes, cambia radicalmente la forma en la que te relacionas con la música y con los demás músicos.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2012/05/la-formula-absoluta-de-una-escala-musical/


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

HTML – Hipertexto saltarín

Imágenes en HTML - El títuloPuede que ahora, con páginas webs tan elaboradas e interactivas, no te des cuenta… Pero, sin lugar a dudas, el elemento distintivo de una página web siempre ha sido esa capacidad de enlazar contenidos a través de los hiperenlaces.

Si quieres aprender a generar esos textos subrayados que te hacen saltar a otra página cuando haces clic sobre ellos, sigue leyendo…

Para crear un hiperenlace, necesitamos presentar a un nuevo elemento. Apréndetelo bien, pues con él saltaremos al hiperespacio:

<a> ... </a>

Supongamos que queremos escribir un párrafo como el siguiente:

«Este es un ejemplo de lista con múltiples niveles de anidación en HTML.»

El primer paso consiste en escribir entre ambas etiquetas el texto que queremos que aparezca subrayado, que será el que nos invitará a hacer clic sobre él para transportarnos. En nuestro caso:

<a>lista con múltiples niveles</a>

A continuación debemos indicar a dónde saltaremos. Para ello, el elemento <a> dispone del atributo href (de hypertext reference), al que facilitaremos, entre comillas, la URL de destino.

Búscalo dentro de la etiqueta <a> de apertura y observa el texto desde el que se activará entre ambas.

<a href="http://dl.dropbox.com/u/4631191/blog/html/listas-anidadas-2b.html">listas con múltiples niveles</a>

En este ejemplo, hemos indicado la URL absolutamente, pero también podríamos haberlo hecho relativamente a la página actual:

href="python.html"

Enlazaría a la página python.html existente en el mismo directorio en el que se halla la página actual.

href="programacion/python.html"

Enlazaría a la página python.html que existe dentro de la carpeta programacion que hay en el mismo directorio en el que se encuentra la página actual.

href="../programacion/python.html"

Como lo anterior, pero en este caso la carpeta programacion existe no en el directorio actual, sino en el que está por encima. Los dos puntos .. representan al directorio padre.

Y eso es todo, de momento. En sucesivas entregas iremos sacándole más punta al elemento <a>. Ahora permíteme que practique lo aprendido poniendo un hiperenlace en la firma…

Javier Montero Gabarró


HTML – Hipertexto saltarín


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

MySQL – Datos numéricos enteros

Recientemente asistimos con emoción a la creación de la primera tabla en MySQL. Aprendimos a utilizar el tipo de datos VARCHAR para campos con texto de longitud variable y vimos el comando para mostrar la estructura de la tabla recién creada.

Tan sólo con el tipo VARCHAR podríamos modelar buena parte de nuestros datos. Los campos de texto son, indudablemente, una abrumadora mayoría. Incluso podríamos llegar a representar datos numéricos empleando simplemente texto. ¿Qué me impediría, por ejemplo, almacenar un número de teléfono, o el número de cartuchos que tengo en stock de un determinado modelo de impresora, en un campo de tipo VARCHAR?

Es cierto que un número de teléfono podría registrase en un VARCHAR sin mayor problema, pero no así el stock de consumibles. Si entrego un cartucho, ¿cómo decremento en una unidad esa cantidad si estoy en un campo que es de tipo texto?

Para almacenar datos susceptibles a que se realicen sobre ellos operaciones matemáticas necesitamos emplear tipos numéricos.

Vamos a presentar hoy el tipo INTEGER, con el que almacenaremos valores numéricos enteros.

El tipo INTEGER, que puede resumirse como INT, ocupa un espacio de 4 bytes (32 bits), por lo que nos permite almacenar enteros positivos y negativos comprendidos entre -2^{31} hasta 2^{31}-1. Es decir, en el rango comprendido entre

-2147483648 … +2147483647

Una buena amplitud, desde luego, tratándose de enteros, aunque más adelante veremos que puede aumentarse aún más.

Vamos a crear, a título de ejemplo, una tabla para almacenar el stock disponible de consumibles de nuestros dispositivos de impresión.

mysql> CREATE TABLE consumibles
    -> (
    -> referencia VARCHAR(15),
    -> impresora VARCHAR(20),
    -> stock INT
    -> );
Query OK, 0 rows affected (0.36 sec)

En referencia almacenaremos el código identificativo del tipo de cartucho o tóner; en impresora, el modelo de la máquina al que se asocia y en stock el número cartuchos que tenemos en almacén.

Veamos la estructura de la tabla recién creada:

mysql> DESC consumibles;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| referencia | varchar(15) | YES  |     | NULL    |       |
| impresora  | varchar(20) | YES  |     | NULL    |       |
| stock      | int(11)     | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+
3 rows in set (0.02 sec)

El tipo INTEGER es un tipo estándar de SQL para representar números enteros. MySQL ha extendido el número de opciones a otros cuantos más de los que hablaremos más adelante, diferenciándose en el número de bytes que ocupan. Veremos también que podemos incluso especificar que los enteros sean rigurosamente sin signo (es decir, números no negativos). Hasta entonces, apuesta por la compatibilidad plena: INTEGER (o INT) es el tipo entero por excelencia.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2012/05/mysql-datos-numericos-enteros/


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

Python – Capítulo 33: Imprimiendo al estilo de C

Tomemos prestada la función desguazar() que diseñamos en el capítulo anterior:

def desguazar(dividendo, divisor):
  cociente = dividendo//divisor
  resto = dividendo%divisor
  return cociente, resto

Vamos a modificarla ligeramente para que, en vez de devolver la tupla con el resto y el divisor nos muestre una frase con el resultado. Esto es, que funcione del siguiente modo:

>>> desguazar(17,5)
El cociente es 3 y el resto es 2.

No parece complicado en absoluto. Una primera aproximación podría ser esta:

def desguazar(dividendo, divisor):
  cociente = dividendo//divisor
  resto = dividendo%divisor
  print("El cociente es", cociente, "y el resto es", resto,".")

Salvo la excesiva distancia del punto final, el resultado es aceptable (recuerda que por defecto print() establece como separador un espacio en blanco).

>>> desguazar(17,5)
El cociente es 3 y el resto es 2 .

Sin embargo, el modo de lograrlo deja bastante que desear: hemos troceado la cadena para poder intercalar los valores enteros, que previamente hemos tenido que convertir en strings.

Si sabes programar en lenguaje C, tal vez sientas algo de añoranza. Con lo bien que resuelve el problema un programador en C con printf

printf("El cociente es %d y el resto es %d.\n", cociente, resto);

¿No existiría algo semejante en Python? ¿No existiría un modo de formatear una cadena de caracteres con especificaciones en su interior?

Desde luego que existe, y no sólo de un modo semejante, sino más flexible aún.

Voy a mostrarte como resolvía Python esto a la antigua usanza. Hoy día, el método format() hace innecesario recurrir a ella, pero puesto que aún sigue siendo perféctamente válida y no parece haber indicios de que vayan a dejarla obsoleta, he preferido explicártela en primer lugar.

Esta es la nueva función. Presta mucha atención a la última sentencia:

 def desguazar(dividendo, divisor):
  cociente = dividendo//divisor
  resto = dividendo%divisor
  print("El cociente es %d y el resto es %d." % (cociente, resto))

Y observa el resultado:

>>> desguazar(17,5)
El cociente es 3 y el resto es 2.

Perfecto.

Fíjate cómo, al igual que en printf, especificamos un valor entero con %d. Puesto que vamos a sustituir dos enteros, %d aparece dos veces en los lugares adecuados dentro de la cadena.

A continuación, una vez hemos cerrado la cadena con las comillas, aparece el símbolo %, que en este contexto es conocido como operador de especificación, formateo o interpolación.

Tras el figura una tupla con las variables que sustituirán cada especificación. Es muy importante que el número de especificaciones en la cadena coincidan con el número de variables en el lado derecho de %. En caso contrario se produciría un error en tiempo de ejecución (una excepción).

Naturalmente, si sólo hubiera una especificación, en lugar de una tupla aparecería un entero simple:

>>> ovejas=17
>>> print("Tengo un rebaño de %d ovejas..." % ovejas)
Tengo un rebaño de 17 ovejas...

Hemos presentado %d, la especificación para enteros con signo en formato decimal (base 10), pero hay otras más para todo tipo de valores. Las iremos presentando gradualmente; entre tanto, asegúrate de comprender la técnica aquí descrita.

Javier Montero Gabarró


Python – Capítulo 33: Imprimiendo al estilo de C


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

mIRC – Capítulo 23: El comando notify

En el último episodio exprimimos todas las opciones suculentas de configuración que tiene la notify list. No obstante, conviene que aprendas a interactuar con ella a través de la línea de comandos, no ya por la agilidad que te ofrece, sino porque, además, podrás incluir estos comandos en los scripts que más adelante desarrollarás.

Nada más entras en el IRC el sistema pega un repaso a tu lista de notificación y te informa de quién hay conectado. Después te va diciendo, puntualmente, quién entra o sale de esa lista.

Si ya no recuerdas la situación actual, puedes forzar tu mismo que se te comunique esta información empleando el comando:

/notify

Al momento te aparecerá, en la ventana de Status, la relación de tus colegas que están conectados.

Para saber qué nicks tienes incluidos en tu lista de notificación, pero sin precisar si están conectados o no, ejecuta:

/notify -l

Este comando puede parecer poco útil en el día a día, pero te aseguro que será de gran valor cuando desarrollemos scripts…

Lo cierto es que la mejor presentación de la lista de notificación es la que te facilita el programa desde el menú View | Notify list, como vimos en el capítulo 21. Si quieres que esa ventana te aparezca de inmediato, puedes invocarla desde la línea de comandos con el modificador -s (de show).

/notify -s

Cuando te canses y quieras cerrarla, ocúltala con -h (de hide).

/notify -h

Agregar un nuevo usuario a la notify list es algo tan simple como esto:

/notify plutonio

Si plutonio ya estuviera en ella el sistema te informaría al respecto.

Para eliminar a plutonio de la lista empleamos el modificador -r (de remove).

/notify -r plutonio

Si recuerdas lo explicado en el capítulo anterior, vimos que, a la hora de agregar un nuevo usuario a la lista, teníamos una opción para que, a la vez que se informaba sobre la presencia, se realizase un /whois sobre el usuario. Podemos replicar esto desde la línea de comandos precediendo al usuario por el símbolo +.

/notify +plutonio

Este comando no sólo agregará plutonio a la notify list, sino que, además, nos mostrará, en cada notificación, sus datos de conexión, canales en los que está, etc.

Vimos también otra opción para asociar nicks con redes, por si queríamos restringir el ámbito de actuación de la notify list. Fíjate en el uso del modificador -n (network):

/notify -n plutonio irc-hispano

Este comando agrega a plutonio a la notify list, pero sólo recibiremos información sobre él cuando ambos estemos en la red irc-hispano.

También vimos que podíamos facilitar información adicional sobre el usuario:

/notify plutonio El colega de la tabla periódica

Para finalizar, desde los comandos también puedes activar y desactivar (on / off) el sistema de notificación, por si no deseas que temporalmente se te desconcentre con este tipo de mensajes.

/notify off

Javier Montero Gabarró


mIRC – Capítulo 23: El comando notify


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

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