#!/usr/bin/env python3
import sys
n, t = (input("Introduce dos números separados por espacios ? ").
strip().split(' '))
n , t = [int(n), int(t)]
print ("Has introducido " , n , " y " , t)
a = map(int, input("Introduce 10 números separados por espacios ?\n").
strip().split(' '))
for i in a:
sys.stdout.write (str(i) + " ")
sys.stdout.flush()
print ()A diferencia de con Perl, en Python necesitamos dar más información sobre los tipos de los datos que estamos manejando… pero a parte de eso las cosas no son mucho más diferentes.
Python nos permite leer información del usuario utilizando la función
input (Python3) o raw_input (Python2)… (BASIC
alguien?). Esta función lee toda la entrada como una sola cadena de
caracteres incluyendo el retorno de carro final.
Podemos eliminar el retorno de carro final con el método
strip de la clase string el cual nos permite
eliminar los espacios (lo que incluye tabuladores y retornos de
carro) al final de la cadena. Luego el método split nos
permite obtener fácilmente los valores que nos proporcionen separados
por espacios, o cualquier otro separador que elijamos.
Python permite retornar varios valores en una misma operación. En nuestro ejemplo, podemos almacenar los dos valores que nos retorna
spliten distintas variables en un solo comando. De la misma forma podemos convertirlos en enteros
El resultado de strip son cadenas de caracteres. Si
queremos utilizarlas como número debemos convertirlas utilizando
int().
Para un par de valores, resulta práctico asignar variables y trabajar
como en la primera parte del programa (donde solo leemos 2 valores),
especialmente cuando los valores tienen significado especial en el
programa. Sin embargo cuando el número de valores es elevado o
indeterminado resulta más práctico utilizar la función
map.
Esta función nos revuelve una lista, tras aplicar una determinada
función a cada uno de los elementos de un iterable. En el ejemplo
anterior, estamos aplicando int(), a la lista que nos
retorna split.
En Python, un iterable es un objeto que implementa ciertos métodos que nos permiten recorrer los elementos almacenados en ellos. En otras parablas, un iterable es un objeto del que podemos obtener un iterador que nos permite recorrer todos los elementos almacenados en el mencionado objeto. Esto nos permite acceder a los datos independientemente de la forma física en la que se almacenan o la forma lógica en la que se organizan.
En Python, las listas y tuplas son tipos iterables.
Esta sería la versión del programa para Python 2.7
#!/usr/bin/env python2
import sys
n, t = (raw_input("Introduce dos numeros separados por espacios ? ").
strip().split(' '))
n , t = [int(n), int(t)]
print "Has introducido " , n , " y " , t
a = map(int, raw_input("Introduce 10 numeros separados por espacios ?\n").
strip().split(' '))
for i in a:
sys.stdout.write (str(i) + " ")
sys.stdout.flush()
print Python maneja los errores usando excepciones. En nuestro ejemplo, si
introducimos valores incorrectos, por ejemplo un nombre en lugar de un
número, Python generará una excepción ValueError. Para
manejar los errores de ese tipo debemos capturar la excepción, lo cual
podemos hacer utilizando un bloque try... catch. Aquí
tenéis un ejemplo:
n, t = (input("Introduce dos números separados por espacios ? ").
strip().split(' '))
try:
n , t = [int(n), int(t)]
except ValueError:
print ("Introduce numeros validos")
sys.exit(1)En este caso simplemente mostramos un mensaje de error y terminamos. Podéis modificar el programa fácilmente para que os vuelva a pedir los números, en lugar de terminar.
Las excepciones son la forma moderna de manejar errores en los lenguajes más recientes. Si bien, pueden resultar contraproducentes en muchos casos, son una forma elegante de manejar los errores. Cuando usamos excepciones, el propio lenguaje, o nuestro código, emite excepciones cuando se detecta una determinada condición (normalmente una condición de error). Si la parte del programa decide no hacer nada con la excepción, el programa terminará con un error.
De lo contrario, el programa pone el código que puede generar la excepción (en nuestro caso la función
int) en un constructor especial del lenguaje que normalmente se llamatry... ALGOdondeALGOvaria con los lenguajes y en Python esexcept. Si el código dentro del bloquetrylanza una excepción, el programa se interrumpirá en ese punto y el flujo pasará inmediatamente al bloqueexcept. Este tipo de operación es común en todos los lenguajes que soportan excepciones.
SUMARIO
- En Python los datos del usuario los leemos como cadenas de caracteres que luego debemos convertir al tipo adecuado
- La entrada de usuario se lee como una única línea de texto incluyendo el retorno de carro
- El método
splitnos permite trocear fácilmente el texto de usuario usando el delimitador que elijamos.
■
