Python – Capítulo 15: Índices negativos

Objetivo: demostrar que los índices de una lista también pueden ser negativos.

En entregas anteriores explicamos que accedíamos a los diferentes elementos de una lista a través de su índice. Dijimos también que la cuenta no empezaba en el uno sino en el cero.

Por lo tanto, en una lista como

semana = ['lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado', 'domingo']

referenciamos el primer elemento, 'lunes', con:

semana[0]

mientras que el último, 'domingo', es:

semana[6]

En general, y teniendo en cuenta que el número total de elementos de una lista es len(<em>lista</em>), el último de ellos será referenciado como:

lista[len(lista) - 1]

Hoy aprenderemos una particularidad de Python: los índices pueden ser enteros negativos tambien. El concepto es sencillo:

lista[-1] hace mención al último elemento de la lista; lista[-2] al penúltimo, y así sucesivamente.

Aplicado a nuestra lista semana, tenemos:

semana[-1] corresponde a 'domingo', semana[-2] a 'sábado', etcétera.

¿Cuál sería el índice del primer elemento de la lista utilizando índices negativos?

Empleando la cuenta de la vieja es fácil de encontrar que el primero tiene por índice -7.

En general, si la lista tiene por longitud len(lista), el primer elemento es

lista[-len(lista)]

El siguiente programa ilustra esto:

semana = ['lunes', 'martes', 'miércoles', 'jueves', 'viernes',
   'sábado', 'domingo']

# Primer elemento de la lista desde dos ópticas
print('Primer elemento de la lista empleando índices positivos: ',
   semana[0])
print ('Primer elemento de la lista empleando índices negativos: ',
    semana[-len(semana)])

print ('-------------------------------') # Separador

# Último elemento de la lista desde dos ópticas
print('Último elemento de la lista empleando índices positivos: ',
   semana[len(semana) - 1])
print ('Último elemento de la lista empleando índices negativos: ',
    semana[-1])

Habrá ocasiones en las que agradeceremos esta posibilidad particular que tiene Python de «comenzar la cuenta» desde el final de la lista. Tiempo al tiempo…

Javier Montero Gabarró


Fecha de la última revisión: 19 de diciembre de 2012


http://elclubdelautodidacta.es/wp/2011/08/python-capitulo-15-indices-negativos/


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.

Python – Capítulo 14: El total de elementos de una lista

Objetivo: determinación del número de elementos de una lista en Python.

En ocasiones deberemos conocer el número de elementos de que se compone una lista. Por ejemplo, imagina que tienes que calcular la media aritmética de un conjunto numérico determinado por una lista. La operación es sencilla: sumamos todos los números y dividimos entre el total de elementos, que es, precisamente, la longitud de la lista.

Calcular el número de miembros de una lista en Python es tan sencillo como aplicar la función
len()

introduciendo como parámetro el nombre de la lista.

La lista que figura a continuación contiene todos los días de la semana y tenemos curiosidad por saber de cuántos días estamos hablando exactamente.

Para resolver este complejo problema recurriremos a dos aproximaciones: a) mediante el método universal e infalible de la cuenta de la vieja; b) aplicando la función len(), que para eso está.


lista = ['Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado', 'Domingo']
totaldiascuentavieja = 0

for dia in lista:
    totaldiascuentavieja += 1

print("El número de elementos de la lista, por la cuenta de la vieja es",
 totaldiascuentavieja)
print("El número de elementos de la lista según la función len es", len(lista))

Para la cuenta la vieja hemos utilizado un bucle for que itera sobre la lista de principio a fin, incrementando cada vez en una unidad la variable totaldiascuentavieja. El segundo cálculo es inmediato: len(lista) nos devuelve precisamente ese mismo valor.

Como veremos más adelante, la función len() no es aplicable exclusivamente a las listas, sino a cualquier otro tipo de secuencia en general, como los strings o las tuplas, e incluso en otras estructuras como los conjuntos.

Javier Montero Gabarró


Fecha de la última revisión: 14 de diciembre de 2012


http://elclubdelautodidacta.es/wp/2011/08/python-capitulo-14-averiguando-el-numero-de-elementos-de-una-lista/


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.

Python – Capítulo 13: Recorriendo una lista con la sentencia FOR

Objetivo: presentar el bucle FOR al estilo de Python.

Supongamos que tenemos una lista sobre la que tenemos que realizar algún tipo de acción que implique acceder secuencialmente a cada uno de sus elementos. Sin ir más lejos, ¿cómo haríamos para imprimir, uno por uno, cada elemento que compone la lista?

Este problema es muy común y debe poder resolverse de un modo sencillo.

Considera, por ejemplo, la siguiente lista de todos los días de la semana:


semana = ['Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado', 'Domingo']

Imprimir el listado sería tan sencillo como hacer


print (semana[0])
print (semana[1])
print (semana[2])
print (semana[3])
print (semana[4])
print (semana[5])
print (semana[6])

Recuerda, tal como explicamos en el capítulo 11, que el primer índice de una lista es el 0, y no el 1; por eso hemos recorrido los siete elementos empezando en el cero y acabando en el seis.

Eso resolvería nuestro problema. Pero, ¿y si la lista tuviera 1000 elementos? ¿Escribiríamos 1000 líneas de código para acceder a la secuencia completa de la lista?

El bucle for nos permite solucionar esto de un modo elegante. Obsérvalo en acción:

semana = ['Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes',
 'Sábado', 'Domingo']

for dia in semana:
    print(dia)

---
Lunes
Martes
Miércoles
Jueves
Viernes
Sábado
Domingo

La variable dia, definida ad hoc en el propio bucle, va a tomar, uno a uno, todos los elementos de la lista semana, comenzando por ‘Lunes’ y terminando en ‘Domingo’.

Con cada uno de estos valores realizará las acciones definidas a continuación en el cuerpo del bloque (delimitado por la indentación). En el ejemplo, simplemente imprimirá su valor.

¡Cuánta elegancia! Adoro Python.

Javier Montero Gabarró


Fecha de la última revisión: 11 de noviembre de 2012


Python – Capítulo 13: Recorriendo una lista con la sentencia FOR


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.

Python – Capítulo 12: IDLE

Objetivo: presentar IDLE, un sencillo, pero eficiente entorno de desarrollo integrado en el propio Python.

Existen diversas formas de trabajar con Python. La más común consiste en generar un fichero de texto con nuestro editor favorito, almacenarlo con la extensión .py y ejecutarlo a continuación desde el intérprete de comandos. Otro modo implica la utilización de un IDE.

Un IDE (Integrated Development Enviromment, Entorno de Desarrollo Integrado) es una aplicación que integra en un espacio común todas las herramientas que el programador necesita en cada fase del desarrollo de sus programas, desde la edición del código, hasta la compilación, el depurado y la ejecución, así como un conjunto adicional de funciones que facilitan todas estas labores.

Hay numerosos IDEs para Python. Aquí hablaremos de uno de ellos, IDLE; no porque sea el mejor, sino porque es gratuito y se incluye en el paquete que descargamos desde la página oficial de Python.

Si eres usuario de Windows y tienes Python instalado, ya tienes IDLE también. Algunas distribuciones Linux no lo incluyen por defecto, y habría que instalarlo aparte si estuvieras interesado en su utilización.

El nombre IDLE, en sí, ya tiene su gracia:

Al igual que el nombre Python surge en honor a Monty Python, IDLE (que suena casi a IDE), está inspirado en Eric Idle, uno de los fundadores del grupo de humoristas británico.

IDLE, aunténtico que es, está escrito en Python, apoyándose en Tkinter para todos los aspectos relacionados con la interfaz gráfica de usuario, lo que facilita la interoperabilidad entre distintos sistemas.

Arranca IDLE. Si eres usuario de Windows, localízalo dentro del grupo de programas que aparece tras la instalación de Python.

Aparecerá una ventana, denominada Python Shell, ofreciéndote el prompt de Python >>>, del mismo modo que si lo hubieras invocado desde el intérprete de comandos.

En la parte superior se halla la barra de menús.

A continuación, crea una nueva ventana en la que escribirás un programa simple de ejemplo.

File | New window

Y escribe algo así como:


# Programa desde IDLE
print ("Este programa está creado desde el editor que trae IDLE")

Observa los colores que te aparecen al escribir: IDLE se ocupa de destacar los distintos elementos, de modo que el programa resulta más legible.

Guarda el programa en disco con:

File | Save As...

No te olvides de escribir la extensión .py junto al nombre.

Ejecuta el programa recién creado con:

Run |Run Module (o pulsando la tecla F5)

En la ventana Python Shell se te mostrará el resultado de la ejecución.

También podrías haber cargado un fichero ya existente:

File | Open

No necesitas cerrar la ventana del código anterior, IDLE te permite tener abiertas cuantas necesites.

Entretente enredando con IDLE. Carga alguno de los programas anteriores y juega con ellos. A su debido momento mostraremos otras características de este genuino y divertido IDE que utilizaremos a partir de ahora para seguir aprendiendo Python con comodidad.

Javier Montero Gabarró


Fecha de la última revisión: 31 de octubre de 2012


http://elclubdelautodidacta.es/wp/2011/07/python-capitulo-12-idle/


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.

Python – Capítulo 11: ¡Qué lista que eres!

Objetivo: presentar una de las estructuras de datos estrella de Python: las listas.

En el capítulo de hoy realizaremos una primera aproximación a unas estructuras de datos muy particulares y tremendamente versátiles, las listas. Te anticipo que harás uso extensivo de ellas a lo largo de tu vida como programador en Python. Te encantarán no solo por su flexibilidad para adoptarlas en buen número de situaciones diversas, sino también por su eficiencia, la extremada rapidez de las operaciones efectuadas con ellas.

En esencia, una lista es una secuencia: una colección de objetos ordenados.

He aquí tu primera lista:

['Pera', 'Plátano', 'Manzana', 'Fresa']

Se trata de una lista que consta de cuatro elementos (en este caso, cuatro cadenas de caracteres). El primero es 'Pera' y el último 'Fresa'.

Observa que separamos cada elemento mediante una coma y que el contenedor en conjunto se delimita mediante un par de corchetes.

Los elementos de una lista no tienen por qué ser necesariamente del mismo tipo. En el siguiente ejemplo la lista contiene dos strings y dos números.

['Ajedrez', 7, 3, 'Pepino']

Accedemos a los distintos elementos de la lista a través de su índice, esto es, la posición del elemento dentro de la lista. Es importante tener presente que el primer elemento de la lista no tiene por índice uno, sino cero.

Volvamos a la lista del primer ejemplo, con cuatro elementos en total. El primero de ellos tiene por índice cero; el último tres. Te lo he puesto en negrita para que te lo repitas unas cuantas veces y lo asimiles bien. Es un error común comenzar a contar partiendo desde el 1.

En general, si una lista tiene n elementos, el índice del último será n-1.

Asignamos una variable a una lista del siguiente modo:

frutas = ['Pera', 'Plátano', 'Manzana', 'Fresa']

Para acceder, por ejemplo, al elemento de índice 2, escribiríamos

frutas[2]

Según lo explicado anteriormente, se trataría del tercer elemento, 'Manzana'.

El programa que figura a continuación ilustra de un modo básico el acceso a los elementos de una lista a través de su índice:

semana = ['lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado', 'domingo']

dia = int(input('Introduce un número del 1 al 7: '))

while dia < 1 or dia > 7:
    dia = int(input('Introduce un número del 1 al 7: '))

print('El día elegido se corresponde a un', semana[dia-1])

Su operativa es la siguiente: nos solicita que introduzcamos un número del 1 al 7 y, en función de ese valor, nos devuelve el día de la semana correspondiente (siendo el primero el lunes y el séptimo el domingo).

Comienza con la creación de una lista conteniendo los siete días de la semana. La almacenamos en la variable semana.

Introducimos después un número del 1 al 7 y lo guardamos en la variable dia.

El bucle while que aparece a continuación efectúa una sencilla comprobación: si el número que hemos introducido no está dentro del rango del 1 a 7, se nos solicita que repitamos la operación.

Finalmente, se imprime el día correspondiente. Observa cómo empleamos el índice: puesto que el primer elemento de la lista tiene por índice cero, habrá que restar uno al valor de la variable dia para que se muestre el día correcto. Esto es, el elemento contenido en semana[dia-1].

Y esto es suficiente por hoy. ¿Te han quedado claros los conceptos expuestos en el artículo? Si es así, enhorabuena, has colocado una pieza pequeña pero muy importante en el puzzle.

Javier Montero Gabarró


Fecha de la última revisión: 14 de septiembre de 2013


http://elclubdelautodidacta.es/wp/2011/07/python-capitulo-11-¡que-lista-que-eres/


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.

Python – Capítulo 10: Continúe, por favor

Objetivo: aprender a utilizar la instrucción continue para saltar directamente a la siguiente iteración en un bucle en Python.

En el artículo anterior presentamos la instrucción break, que nos permitía interrumpir la ejecución de un bucle y salir de él. Hoy mostraremos la sentencia continue, muy relacionada con la anterior.

Al igual que break, continue cancela la ejecución de las instrucciones que quedan pendientes del bucle a partir del mismo momento de su aparición.

Pero, a diferencia de break, que ocasionaba, además, la terminación brusca del bucle, dejando de producirse más repeticiones, continue hace que se salte inmediatamente a la siguiente repetición. Es decir, vuelve a comprobarse nuevamente si se cumple la condición y, en caso afirmativo, continúa ejecutándose el bloque desde el principio otra vez.

Para ilustrar su uso, diseñaremos un programa que nos inste a introducir un número. Su misión será calcular la suma de todo lo que vayamos introduciendo, pero sólo teniendo en cuenta los números pares, ignorando los impares.

suma = 0

while True:
    numero = int(input('Introduce un número (0 para terminar):'))
    if numero == 0:
        break
    if numero % 2 != 0:
        continue
    suma = suma + numero

print(suma)

Comenzamos inicializando la variable suma, que contendrá la suma final buscada.

suma = 0

Y nos adentramos en un bucle infinito:

while True:

La condición es cierta siempre, por lo que habrá dotar al programa de mecanismos para interrumpir el bucle.

Introducimos un número, lo convertimos a entero y lo asignamos a la variable numero.

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

Si el número introducido es cero (el valor centinela) rompemos el bucle con la instrucción break.

if numero == 0:
    break

Pero, si no lo es, nos encontramos con el siguiente bloque if, que contiene la instrucción objeto del artículo de hoy:

if numero % 2 != 0:
    continue

El % es el operador módulo, que calcula el resto de una división. Que el resto de dividir un número entre dos no sea cero significa que el número es impar.

Los números impares, tal como está planteado el problema, debemos ignorarlos y no tenemos que incluirlos en la suma. ¿Qué hacer?

Continuar, así de simple: deja de ejecutarse lo que queda de bucle y vuelve otra vez al comienzo, reevaluando la condición. Eso es precisamente lo que hace la sentencia continue.

Cuando el número introducido es par, entonces si se acumulará a la suma total:

suma = suma + numero

Y así sucesivamente hasta que nos cansemos e introduzcamos el centinela, momento en el cual se rompe el bucle y se prosigue con la primera sentencia fuera de él: la impresión del resultado final.

print(suma)

Vuelve al código completo más arriba y comprueba el programa globalmente. Presta mucha atención a las indentaciones que delimitan cada bloque.

Naturalmente, hay medios de resolver este problema sin emplear una instrucción continue, pero he preferido esta solución, en la que se aprecia claramente el uso y diferencia entre los dos modos de alterar la ejecución de un bucle: break y continue.

Javier Montero Gabarró


Fecha de la última revisión: 24 de septiembre de 2012


http://elclubdelautodidacta.es/wp/2011/07/python-capitulo-10-continue-por-favor/


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.

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.

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.

Python – Capítulo 7: Opciones múltiples con elif

Objetivo: mostrar cómo ampliar con elif la estructura if … else en Python para la toma de decisiones múltiples.

En la última sesión de Python aprendimos cómo tratar una dicotomía: si una condición se cumple haz esto; en caso contrario, haz esto otro.

Pero, ¿y si debemos gestionar diversas opciones?

La claúsula elif dentro de la estructura if nos permite resolver este problema.

Observa su utilización en el siguiente ejemplo:


# coding=latin-1
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')

El ejemplo es ilustrativo por sí solo: nos solicita la introducción de un número del 1 al 6 y en función del valor que hayamos facilitado realizará una tarea u otra.

Observa el uso de else, al final, para el caso contrario general en el que no se haya cumplido ninguna de las otras condiciones (por haber introducido un valor fuera del rango indicado).

La palabra elif no es más que una forma simplificada de else if y estrictamente no sería necesaria. Cualquier decisión múltiple se reduce, en última instancia, a un conjunto de decisiones binarias. La ventaja de utilizar elif es que nos permite tener el código más claro visualmente, sin las indentaciones que se producirían tras cada decisión binaria.

Javier Montero Gabarró


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


Python – Capítulo 7: Opciones múltiples con elif


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.

Python – Capítulo 6: En caso contrario

Objetivo: presentar la claúsula ELSE en Python, complemento de IF para el caso en que no se cumpla la condición.

El otro día tuvimos ocasión de conocer la estructura if, que nos permitía reconducir el rumbo de ejecución de un programa en función del cumplimiento o no de una determinada condición.

Recordemos el programa anterior:


nombre = input('Introduce tu nombre de pila: ')
if nombre == 'Javier':
    print('Hola, tocayo')
apellido = input('Introduce tu apellido: ')
print(nombre, apellido)

En el supuesto de que el nombre introducido fuera Javier, se ejecutaba la función print indentada, mostrándonos el mensaje Hola, tocayo.

Pero, ¿y si deseamos que el programa realice algo en caso contrario, es decir, si la condición no se cumple?

La claúsula else (que podemos traducir como en caso contrario) sirve para este propósito.

Modifiquemos el programa anterior para que, si el nombre no coincide, nos muestre un mensaje reflejándolo.


nombre = input('Introduce tu nombre de pila: ')
if nombre == 'Javier':
    print('Hola, tocayo')
else:
    print('No, no te llamas como yo')
apellido = input('Introduce tu apellido: ')
print(nombre, apellido)

Aprecia los dos puntos después de la palabra else. Al igual que después de la condición del if, es un error común olvidarlos.

Observa también la indentación en el print después del else. Recuerda que esa indentación es la que indicará el comienzo y el fin del bloque de instrucciones a ejecutar. En este ejemplo, se ha tratado de una única instrucción; si hubiese sido preciso ejecutar varias, simplemente las colocaríamos debajo con el mismo nivel de sangrado.

Ten presente, a la hora de indentar, que los tabuladores son diferentes de los espacios, aunque en la práctica aparenten la misma separación. Sé siempre coherente y elige uno u otro, pero no los mezcles.

Ilustremos la estructura if… else con un nuevo ejemplo con el que presentaremos, además, otros aspectos del lenguaje de programación Python.


# coding=latin-1
dato = input('Introduce un número entero: ')
if int(dato) % 2 == 0:
    print('El número introducido es par')
    print('La mitad es', int(dato)//2, ', exactamente')
else:
    print('El número introducido es impar')

Este programa nos instará a introducir un número y nos dirá si es par o impar. En el primer caso, calculará, además, su mitad.

El comentario en la primera línea tiene un significado especial:

# coding=latin-1

He tenido que incluirlo para que el intérprete reconociera los acentos propios de nuestro idioma. En determinados entornos (como IDLE, que presentaremos más adelante) esto no es necesario, pero en la máquina Windows que he empleado para redactar este artículo la codificación no era la adecuada.

Fijémonos en el comienzo de la estructura if:

if int(dato) % 2 == 0:

La variable dato, recogida a través de input, es del tipo string, es decir, una cadena de caracteres. Para poder realizar operaciones aritméticas con ella es preciso convertir su valor a una cifra numérica. La función int() se ocupa de este cometido, devolviendo un valor entero.

El programa, tal como está escrito, no realiza ningún tipo de comprobación de errores a la hora de introducir el valor y espera nuestra cooperación. Si en vez de introducir un número facilitamos una cadena de caracteres, el programa devolverá un error justo en la línea en la que trata de convertirla a número entero.

El operador % nos da el resto de la división entera (también conocido como operador módulo). Si el resto de la división por dos es cero, sabremos que el número es par y se ejecutarán los dos print que aparecen a continuación. Fíjate cómo la indentación muestra perfectamente el comienzo y el final del bloque. En la segunda de las instrucciones el programa calculará la mitad del valor introducido y nos la mostrará.

Observa con detalle la expresión:

int(dato)//2

El doble signo de división significa división entera y nos devolverá únicamente la parte entera de la división (el cociente).

En caso contrario, si el resto de la división no es cero el programa nos mostrará un mensaje en pantalla indicándonos que el número introducido es impar.

Espero que hayas comprendido la lógica de la estructura if … else. En la próxima entrega le daremos una nueva vuelta de tuerca.

Javier Montero Gabarró


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


Python – Capítulo 6: En caso contrario


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