Arrancando Knoppix en modo texto

Knoppix 6.4.4
Nivel: Intermedio

Los grandes gurús del Linux trabajan en modo texto.

Las aplicaciones más suculentas se lanzan en modo texto. Están programadas para cumplir exclusivamente con su función, sin la sobrecarga que implica su diseño para trabajar en un entorno gráfico.

Por mucho que la interfaz gráfica se esfuerce en facilitar las cosas al usuario, no se puede «entender» ningún sistema Linux si no se conocen sus entrañas a nivel de comandos y ficheros de configuración.

Knoppix, como cualquier otra distribución, está repleto de herramientas poderosas a nuestro alcance desde el modo texto.

Y, si vamos a hacer uso de ellas, ¿por qué molestarnos tan siquiera en lanzar el entorno gráfico?

¿Y si la máquina sobre la que queremos lanzar Knoppix está escasa de recursos y es incapaz de cargar el escritorio en condiciones?

Arrancar Knoppix en modo texto es muy sencillo, basta llevar la máquina a nivel de ejecución 2. Para ello, cuando nos aparece el prompt (boot:), durante el proceso de arranque, escribimos, antes de que continúe,

knoppix 2

o bien, si además deseamos que el teclado esté en español:

knoppix 2 lang=es

Así de simple.

Si cuando nos cansemos de trabajar con comanditos queremos lanzar desde ahí el entorno gráfico, nos basta con llevar la máquina al nivel de ejecución 5 con:

init 5

Y recuperaremos nuestro escritorio y sus ventanas.

¿Queremos desmontar el entorno gráfico y regresar al modo texto?

Abrimos una ventana con un terminal y escribimos:

init 2

para así devolver la máquina al runlevel 2.

Javier Montero

LaTeX – Capítulo 1: Introducción

Objetivo: presentar LaTeX, el siempre vivo programa de maquetación multiplataforma.

¿Cansado de dar formato a tus documentos con procesadores de texto WYSIWYG aburridos?

¿Harto de que la forma te distraiga durante el proceso de creación del fondo?

¿No dispones de grandes conocimientos de maquetación y aún así aspiras a crear documentos estructurados de un aspecto coherente y profesional?

¿Escribes habitualmente documentos técnicos y el editor de ecuaciones de Word te aburre soberanamente?

¿Quieres tener a tu alcance centenares y centenares de tipos que te permitan maquetar documentos casi de cualquier índole, incluidas tus partidas de ajedrez?

¿Te va la marcha como programador?

¿Apasionado de las herramientas de código abierto?

Si la respuesta a algunas de estas preguntas es sí, entonces necesitas \LaTeX y estás en el sitio adecuado para aprenderlo sin esfuerzo y en pequeños sorbos.

¿No has oído hablar de \LaTeX? Haz una búsqueda sencilla en Google y podrás ampliar la información.

Si capta tu atención lo suficiente necesitarás descargarte el compilador y las herramientas asociadas. Hay numerosas opciones gratuitas. Si trabajas en un entorno Windows te recomiendo, por ejemplo MiKTeX. En el mundo Linux, al cual está muy ligado \LaTeX, hay diversas posibilidades. Por ejemplo, el paquete Tex Live, de plataforma cruzada, que además tiene su versión para Windows, y es una excelente opción si trabajas a caballo entre los dos entornos habitualmente.

Elige el que más te guste, descárgalo e instálalo, que en breve empezaremos a crear documentos con elegancia.

Javier Montero Gabarró


Fecha de última modificación: 6 de septiembre de 2012


LaTeX – Capítulo 1: Introducció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


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

Corriendo mientras la ciudad despierta

Día histórico en mi trayectoria como corredor: a las 6:10 de la mañana ya estaba pateándome las calles de Sevilla.

La noche anterior dejé todo bien preparado. Creo que eso es importante: por un lado refuerza el compromiso para no echarme atrás a la mañana siguiente; por otro, es poco más que lavarme la cara, vestirme y salir a la calle, sin tener que perder tiempo buscando las cosas.

Rato antes de levantarme mi mente ya está esperando el momento. No en vano se trata de un acontecimiento nuevo e importante.

Pero el despertador no ha sonado aún, no tiene sentido esa inquietud, debería relajarme.

Me levanto, ha llegado el momento. Compruebo, atónito, que en la pared hay unas grietas y ronchones tremendos.

Me doy cuenta de que no es más que un sueño. Estoy soñando que me estoy levantando para irme a correr.

Algunos minutos antes de las seis, suena el despertador, el de verdad, y me incorporo. No hay grieta alguna en la pared.

A las 6:10 ya estoy corriendo. Temperatura anómala de 21 grados; siento hasta frío.

No hago más que comenzar y veo, justo delante de mí, a otro corredor que empieza su rutina de entrenamiento. Me decido a seguirlo, discretamente, a unos 30 metros por detrás. No tengo ninguna ruta prevista, así que por donde él tire estará bien.

Llegamos a la Barqueta y mi peculiar liebre sigue por Torneo bordeando el centro de la ciudad. Me pregunto si tiene en mente la vuelta completa a Sevilla.

No. Al rato veo que consulta el reloj e invierte el sentido de su marcha, para recorrer a la inversa el camino andado. Compruebo que estamos en el minuto quince. Está claro que tiene calculada su salida para correr un total de 30 minutos.

Yo bordearé todo el centro, algo que suele llevarme aproximadamente una hora.

En la calle Arjona, una avenida ancha, me he permitido el lujazo de correr directamente por mitad de la calzada. La calle completa para mí, no había un alma.

En algún momento, no recuerdo cuando, amaneció y las calles empezaron a cobrar vida.

Vuelta completa bordeando Sevilla, de puerta a puerta de mi casa. Le he dado bastante caña, relativamente hablando. No sé a qué velocidad habré rodado, pero he hecho en 50 minutos, con una FC media de 145 ppm, un trayecto que en un entrenamiento normal me habría llevado en torno a la hora.

Y una sensación de victoria muy peculiar, como en la mejor de mis populares.

Javier Montero

Python – Capítulo 9: Atrapado en el día de la marmota

Objetivo: presentar la sentencia break, que nos permite abandonar un bucle en cualquier momento.

En el capítulo anterior explicamos la estructura while, gracias a la cual podemos repetir en bucle un determinado conjunto de instrucciones.

El funcionamiento era sencillo: evaluábamos una determinada condición y, si era verdadera, ejecutábamos el bloque completo de instrucciones indentadas bajo la instrucción while. Una vez hecho esto, reevalúabamos la condición y, si esta volvía a ser cierta, repetíamos nuevamente el bloque. Así sucesivamente, finalizando el bucle en el momento en que la evaluación de la condición resultara falsa.

Es importante tener en cuenta que, si la condición es verdadera, el conjunto de instrucciones se ejecutará al completo. Todo, si se cumple; o nada, si no.

Pero, ¿y si deseamos abandonar bruscamente el bucle en cualquier momento, sin esperar a que se haya ejecutado el bloque completo o que la evaluación resulte falsa?

La sentencia break se ocupa de esto. Cuando se ejecuta, se sale completamente del bucle, sin esperar a su conclusión y sin repetir ninguna iteración más.

Observa el siguiente programa:

# coding=latin-1

mayor = 0

while True:
    numero = int(input('Introduce un número natural (0 para terminar): '))
    if numero == 0:
        break
    if numero > mayor:
        mayor = numero

print('El número más alto introducido es ', mayor)

Se nos pide que introduzcamos un conjunto de números naturales (es decir, enteros positivos) y se trata de determinar cuál es el mayor de todos ellos. Cuando no queramos introducir más números escribiremos el valor cero (ajeno al conjunto de los naturales), momento en el que el programa sabrá que ha llegado al final y deberá presentar el resultado.

Comencemos observando la sección con el bucle while:

while True:
    numero = int(input('Introduce un número natural (0 para terminar): '))
    if numero == 0:
        break
    if numero > mayor:
        mayor = numero

Lo primero que debe llamarnos la atención es la condición que hemos utilizado. No es una expresión lógica cualquiera.

Las expresiones lógicas dan como resultado dos posibles valores: True o False (la primera letra ha de escribirse con mayúsculas). Es decir, o son verdaderas o falsas.

La expresión True, tal como está en el bucle es siempre verdad. No hay verdad más verdadera que esa. Por lo tanto, su efecto va a ser provocar un bucle infinito, pues la condición siempre va a ser cierta en cada reevaluación. Estamos atrapados en un ciclo sin fin; ¿cómo podríamos escapar de él?

Analicemos con detalle lo que sucede dentro del bucle while:

numero = int(input('Introduce un número natural (0 para terminar): '))

Introducimos un número, lo convertimos a entero (recordemos que el resultado de input es un string, y no un número) y lo asignamos a la variable numero que, en la primera iteración, queda así inicializada (un término relacionado con la programación) con el valor que introduzcamos.

Prosigue el bucle con:

    if numero == 0:
        break
    if numero > mayor:
        mayor = numero

Si el número introducido, almacenado en numero, es cero, se ejecuta la sentencia break.

La sentencia break es drástica: abandona el bucle directamente, sin esperar a que se repita más veces y sin esperar tampoco a completar el resto de instrucciones pendientes del bloque.

Estamos ante un bucle controlado por centinela. A través de la variable numero, estamos atentos, vigilando cuándo se introduce un valor especial que nos hará salir del bucle. El centinela ha de ser un elemento ajeno al conjunto posible de valores susceptibles de ser procesados, por eso elegimos el cero. Habría servido también cualquier entero negativo.

Llegamos al corazón del algoritmo: si el número introducido (numero) es mayor que el que guarda la variable mayor, hacemos que ésta cambie de valor con ese otro número. De este modo nos aseguramos que mayor tenga siempre el mayor de los números que han ido entrando en escena.

Dijimos que todas las variables habían de ser inicializadas antes de poder utilizar su nombre. Por eso, justo antes de entrar en el bucle while nos encontramos la línea

mayor = 0

en la que inicializamos la variable mayor con el valor 0.

Si no hubiéramos hecho esto, el programa habría devuelto un error, al encontrar, dentro del bucle, una variable sin inicializar.

El bucle se repetirá una y otra vez hasta que introduzcamos un cero, valor que hemos elegido como centinela y que disparará la sentencia break.

Una vez hemos salido del bucle, se ejecuta la última instrucción del programa, que imprime el resultado buscado:

print('El número más alto introducido es ', mayor)

Almacena estas técnicas elementales en tu repertorio y no olvides la sentencia break, no sea que en tu radio un día suene la misma canción cada mañana a la misma hora.

Javier Montero Gabarró


Fecha de la última revisión: 29 de mayo de 2013


http://elclubdelautodidacta.es/wp/2011/07/python-capitulo-9-atrapado-en-el-dia-de-la-marmota/


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.

Mejor Marca Personal (MMP)

Hoy he batido mi mejor marca personal. ¡Y con mucho!

¡He salido a correr a las 7:30 de la mañana! El record, lo tenía, creo recordar, alrededor de las nueve de la mañana, lo que significa que una mejoría de hora y media en mi MMP.

Con el añadido de que es sábado, un día que se supone que uno puede permitirse pasar más tiempo en la cama.

Y no es que acostumbre a salir de copas, pero los viernes suelo quedarme trabajando hasta bastante tarde. Y tampoco faltó el tiempo de lectura de «Vida y destino», el tocho que descansa en estos momentos sobre mi mesilla de noche.

Eso sí; antes de acostarme dejé preparada la ropa de correr, el GPS, la riñonera con las llaves y el DNI, la botella de agua, etc…

Algunas de las ventajas de salir a correr tan temprano son obvias: el termómetro marcaba, a las 7:30, tan solo 25 grados.

Me dirigí a la dársena, donde los pescadores más rezagados se afanaban en terminar de montar sus aparejos.

Las normas eran las mismas que perfilé en el último entreno: no sobrepasar las 149 ppm. Ocasionalmente, en alguna comprobación, me aparecían valores de 150 o algo superiores. En esos casos, disminuía sutilmente el ritmo de la marcha hasta que el valor volvía a asentarse en la 14ª decena.

Una hora exacta y algo más de nueve kilómetros recorridos. Entrenamiento suave, pero muy constructivo.

El termómetro, al finalizar, indicaba 26 grados.

Así, sí que se puede.

Javier Montero

Configuración de la red en Knoppix

Knoppix 6.4.4
Nivel: básico

Hemos localizado un ordenador «víctima» del que queremos «tomar prestados» sus recursos para lanzar Knoppix y tener a nuestro alcance su fabuloso kit de herramientas. Tal vez deseemos acceder a nuestro correo electrónico, transferir un fichero mediante ftp, analizar el tráfico en la red o, simplemente, leer un periódico en la web.

Para poder realizar cualquiera de estas tareas, nuestra máquina Knoppix ha de estar conectada a la red.

Configurar la red en Knoppix suele ser una tarea bastante sencilla. Mostraremos aquí cómo hacerlo en las situaciones más típicas:

a) estamos conectados a una red cableada en la que existe un servidor DHCP que nos facilitará automáticamente todos los datos de conexión.

b) tenemos al alcance una red Wi-Fi que está protegida por contraseña.

Insertamos el CD de Knoppix y arrancamos con él la máquina que generosamente nos presta su hardware. Cuando aparece el prompt, escribimos los parámetros adecuados para cargar el sistema en español, tal como explicamos en el anterior post. Esperamos a que el sistema esté disponible tras la carga del entorno gráfico.

La configuración de red de Knoppix se realiza a través de NetworkManager y su plugin para el entorno gráfico. NetworkManager se ha ganado su hueco en muchas distribuciones Linux por la facilidad con la que lleva a cabo la configuración de la red, con poca o incluso nula participación del usuario.

Esto último sucede, precisamente, si estamos conectados por cable a una red con DHCP. No necesitamos hacer nada. Observamos como el icono de conexión de red, el que muestra dos ordenadores, justo al lado del icono de volumen, abajo a la derecha, cambia para mostrarnos que está en la fase de «descubrimiento» de la red. A los pocos segundos nos indica que ya estamos conectados.

En el caso que deseemos conectarnos a una red inalámbrica próxima protegida por contraseña, el procedimiento es bastante simple:

Hacemos clic en el icono de conexión de red con el botón izquierdo. Se nos muestra una lista de las principales redes inalámbricas que han sido detectadas. Hacemos clic en aquella a la que queremos engancharnos.

Si la red está protegida por contraseña, se nos muestra una ventana que nos permite introducir la clave.

Una vez aceptada, nos aparece una última ventana referente a la creación de un depósito de claves para poder guardar encriptada esta contraseña para futuros usos.

Puesto que todo lo que hagamos dentro de Knoppix, cualquier fichero que modifiquemos (salvo que expresamente montemos como escritura el disco duro o dispositivo USB y accedamos a él) se va a perder en cuanto apaguemos la máquina, no tiene sentido normalmente usar el depósito de claves. Ignoramos el mensaje pulsando el botón Cancelar.

Ya tenemos nuestra máquina en la red. Probemos si somos capaces de navegar haciendo clic en el icono del navegador, localizado en el bloque de iconos de la izquierda.

Cuando nos cansemos de jugar, hacemos clic en el icono de Knoppix, el de la izquierda del todo, y abandonamos el sistema.

Retiramos el CD en cuanto nos lo pide.

Aquí no ha pasado nada.

Javier Monntero

La vida es demasiado corta para no jugar al ajedrez

Cualquiera que haya tenido un contacto serio con el mundo de los trebejos lo sabe de sobra. Una vez se instala el gusanillo en ti, te acompaña de por vida.

A veces con más intensidad, otras con menos. Podrán pasar incluso años sin tocar una pieza, pero al final la pasión siempre regresa.

He pasado varios años sin jugar al ajedrez.

Guardé las piezas y el tablero y empaqueté mi colección de casi 200 libros que ahora almaceno en un trastero.

Pero desde hace un par de semanas las piezas han vuelto a tomar vida. Ya llevaba escuchando días el ronroneo en su caja. Fue abrirla, intrigado, y solas se colocaron sobre el campo de batalla cuadriculado.

He vuelto a suscribirme al ICC para ir recuperando, gradualmente, la forma. Me entablo en partidas rápidas a cinco minutos, algo que nunca me ha gustado particularmente, pero son muy útiles para ir desanquilosando el cerebro.

Al igual que corriendo, me siento más un jugador de fondo que un sprinter.

Las palizas que me meten son tremendas. Trato de recordar líneas de apertura olvidadas y, cuando reacciono, la bandera está a punto de caer. A veces, me dejo piezas como si de un principiante se tratara. No veo tres en un burro.

Pero poco a poco, hay que rodar con paciencia, que quien tuvo, seguro que algo retuvo.

He instalado mi vieja copia de Chessbase, con sus millones de partidas históricas, y me he puesto con la siempre satisfactoria tarea de analizar las partidas de los grandes maestros. Podría pasarme horas con cada una de ellas…

Dudo mucho que vuelva a caer en actividades que terminaron quemándome como la liga por equipos. Si este verano encuentro algún torneo de semirrápidas en Andalucía que se dispute durante un fin de semana, quizás me apunte. El turismo-chess siempre ha llamado mi atención. Con frecuencia he envidiado la vida del jugador profesional, de torneo en torneo por toda la geografía mundial, a menudo no obteniendo más que apenas lo mínimo para subsistir y teniendo que dejarse la piel en el tablero para tener opción a un premio en metálico.

Si, llegado enero, el gusanillo persiste, tal vez considere la posibilidad de inscribirme en el open internacional que se disputa cada año en Sevilla, un torneo que provoca en mí tanto buenos como malo recuerdos.

Cualquier jugador lo sabe: asomarse a la ventana de las 64 casillas es entrar en un mundo fascinante. Es muy fácil quedar hechizado y querer pasar más tiempo en él que en el supuesto mundo «real» en el que vivimos.

El dramaturgo inglés Henry James Byron dijo, en una ocasión, que la vida era demasiado corta para el ajedrez.

La frase se presta a dos significados:

Por un lado, podría haber querido criticar al jugador de ajedrez diciendo que la vida era demasiado corta para perderla en un simple juego.

Pero el significado más aceptado por la comunidad ajedrecística es que harían falta varias vidas para dominar la complejidad de este inabarcable juego-ciencia.

A mí me gusta jugar con la frase y decir que la vida es demasiado corta como para no jugar al ajedrez. Es tan mágico y misterioro su mundo, que perfectamente podría dar sentido a toda una vida entera.

Javier Montero

La gran decisión del verano

En matemáticas, un axioma es un enunciado del cual aceptamos su veracidad sin exigir una demostración. Los axiomas son los pilares sobre los que elaboraremos después enunciados más complejos.

Hoy he roto definitivamente uno de mis axiomas básicos en relación a este deporte. Y no es otro sino este:

«Voy a pasar unos cuantos meses rodando a la máxima velocidad que me permita un pulso no superior a 139 ppm».

Ignorante de mí, inexperto corredor en mi primer año como tal, desprecié el tremendo efecto del calor del verano al correr.

Ya tanteé esa posibilidad el domingo pasado, durante el entrenamiento en Madrid. Hoy lo ratifico.

Amplio el límite superior hasta un máximo de 149 ppm.

Podría rodar a 139, pero me aburre tremendamente correr a menos de 8 Km/h. Y si no me divierto, no funciono. Las motivaciones intrínsecas son imprescindibles para mí.

Cuando acabe el verano, replantearé la cuestión nuevamente.

Al amparo de esa nueva ley, he cogido la bicicleta a las seis y veinte de la tarde con la intención de dirigirme al gimnasio y trabajar algo de pesas, junto a la sesión correspondiente corriendo.

Los termómetros con los que me he cruzado marcaban la «friolera» de 47 grados.

Unos cuarenta minutos para trabajar hombros, triceps y biceps. Series de 18 repeticiones con muy poco peso.

Cuando uno tiene tantas ganas de correr, está deseando acabar para ponerse manos a la obra cuanto antes. Me ha costado contenerme y cumplir con el trabajo previo.

Una hora y diez minutos sobre la cinta, segundo rodaje con las plantillas nuevas.

Pulso típico de unos 143 ppm. Aún tengo margen hasta el límite superior, lo cual me va a permitir cierto juego y alegría en mis entrenos veraniegos.

Javier Montero

Carretera y manta

Último día de estas mini vacaciones en casa de mis padres y no he querido despedirme de ellas sin un buen entrenamiento matinal.

Ayer debía estar corriendo la nocturna de Dos Hermanas y, hoy, como compensación por no poder hacerlo por causa del viaje, estaban en el aire los 10K de Leganés.

Ni una cosa ni la otra pudo ser, pero, al menos, una hora de entreno resultaba obligada que menos que por decencia.

No me lo he pensado dos veces: tal como me he levantado temprano, me he vestido, me he bebido un vaso de agua y me echado a correr.

Sin grandes restricciones: este fin de semana le hubiese tocado a mi corazón latir rápido en una popular, así que he perdonado el límite de 139 y me he permitido rodar en un régimen en torno a 150 ppm sin ningún tipo de remordimiento. No he conseguido apenas mejoría en ritmo, todo hay que decirlo. Esta visto que, con estas temperaturas tan altas, para ir decentemente rápido debería someter al corazón a un pulso contínuo de al menos 160 ppm.

Por otro lado, inauguración de las plantillas entrenando sobre las ASICS Gel Kayano 17. La duda que se plantea es si voy a poder mantenerlas o, por el contrario, necesitaré comprar unas zapatillas completamente neutras.

El resultado ha sido satisfactorio, sin problemas de ningún tipo tras esta primera prueba.

Duchita, desayuno esperándome y estiramientos en condiciones.

Dentro de un rato, la paellita de mamá, que no hay otra igual en el mundo.

Después, carretera y manta.

Javier Montero

Python – Capítulo 8: La estructura "while"

Objetivo: presentar la estructura de control while en Python para la repetición de un bloque de instrucciones en tanto y cuanto se cumpla determinada condición.

Supongamos que tenemos un determinado conjunto de instrucciones que queremos repetir en bucle siempre que se cumpla cierta condición. Python resuelve esto a través de la estructura while (que significa mientras, en inglés).

La filosofía es sencilla: mientras se cumpla una condición dada, repite un conjunto de instrucciones.


while condición:
    instrucción 1
    instrucción 2
    instrucción n

Recuerda que la forma que tiene Python para delimitar los bloques de instrucciones es a través de su indentación.

¿Cómo funciona el bucle while?

Se evalua la condición al comienzo del bucle. Si es verdadera, True, el conjunto completo de instrucciones indentadas se ejecuta. Una vez concluido, volvemos arriba y reevaluamos nuevamente la condición. Si sigue siendo cierta, repetimos de nuevo el bucle.

Y así sucesivamente. En el momento en el que la evaluación al comienzo sea falsa, False, el bucle dejará de ejecutarse y el programa saltará a la siguiente instrucción fuera de él.

Recuerda el programa del artículo anterior:


valor = input('Introduce un número del 1 al 6: ')
if int(valor) == 1:
    print('El dado rueda..., ha salido el UNO')
elif int(valor) == 2:
    print('La suerte está echada..., ha salido el DOS')
elif int(valor) == 3:
    print('El dado nos muestra... un TRES')
elif int(valor) == 4:
    print('Increíble pero cierto... ha salido un CUATRO')
elif int(valor) == 5:
    print('Si esto fuera el parchís sacarías ficha. Ha salido el CINCO')
elif int(valor) == 6:
    print('Enhorabuena, has sacado el valor más alto del dado, el SEIS')
else:
    print('Lo siento, el dado no puede devolver ese valor')

Se nos requería la introducción de un número y, si este correspondía a una cara del dado (valor entre uno y seis), nos mostraba su valor. En el caso de que el número no estuviese en el rango adecuado, nos instaba a que volviéramos a intentarlo y el programa concluía. Pero volver a intentarlo implicaba volver a lanzar el programa de nuevo.

El programa siguiente lo hemos mejorado para que no haya que volver a ejecutarlo en el caso de que no se introduzca un valor adecuado:


valor = int(input('Introduce un número del 1 al 6: '))
while valor<1 or valor>6:
    print("Por favor, el número ha de ser un número entre el uno y el seis.")
    valor = int(input('Introduce un número del 1 al 6: '))
if valor == 1:
    print('El dado rueda..., ha salido el UNO')
elif valor == 2:
    print('La suerte está echada..., ha salido el DOS')
elif valor == 3:
    print('El dado nos muestra... un TRES')
elif valor == 4:
    print('Increíble pero cierto... ha salido un CUATRO')
elif valor == 5:
    print('Si esto fuera el parchís sacarías ficha. Ha salido el CINCO')
elif valor == 6:
    print('Enhorabuena, has sacado el valor más alto del dado, el SEIS')

Observemos el bucle while, justo desde la línea anterior a él:


valor = int(input('Introduce un número del 1 al 6: '))
while valor<1 or valor>6:
    print("Por favor, el número ha de ser un número entre el uno y el seis.")
    valor = int(input('Introduce un número del 1 al 6: '))

Justo antes del while le pedimos al usuario que introduzca el valor, que inmediatamente después cotejaremos.


valor = int(input('Introduce un número del 1 al 6: '))

Observa, como diferencia respecto al programa anterior, que esta vez hemos utilizado la función int() directamente en la captura de input(), de modo que la variable valor ya contiene un entero y no será necesaria su posterior conversión en cada elif.

Llegamos al fin a la condición del bucle while:

while valor<1 or valor>6:

Queremos que, si el valor no se corresponde con una tirada del dado, nos lo diga y, además, vuelva a ofrecernos el mensaje incitándonos a introducir otro diferente, labor de la que se ocuparán las dos instrucciones del bloque.

Si el número entero introducido no está en el rango entre uno y seis significa que, o bien es menor que uno, o bien es mayor que seis. Eso es lo que muestra la condición. El operador lógico or devuelve True cuando cualquiera de los dos operandos que están a su lado es verdadero. El bucle se repetirá continuamente hasta que introduzcamos un valor adecuado. Sólo entonces la condición será False y podremos seguir con las instrucciones if posteriores.

Nada más por hoy. Dispones de una herramienta poderosa para el control de flujo de tus programas en Python. Experimenta con ella y asegúrate de comprenderla con claridad antes de proseguir con contenidos más avanzados.

Javier Montero Gabarró


Fecha de la última revisión: 12 de agosto de 2012


http://elclubdelautodidacta.es/wp/2011/06/python-capitulo-8-la-estructura-while/


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