Creamos un programa que nos solicita por teclado un número entero y lo añade a una lista en python.
La lista solo admitirá números enteros, para lo cual se convertirá el dato devuelto por input, que es un string en un int.
Esta conversión puede no ser posible, como en el caso de introducir un texto en lugar de un número, lo que genera una excepción.
Como ejemplo, si ejecutamos esta línea de cógido, e introducimos el texto "hola" en la consola, se genera una excepción de tipo ValueError: invalid literal for int() with base 10: 'hola'
La salida en la consola será:
Por lo tanto tendremos que controlar la excepción para ignorar esas entradas y continuar con el programa.
Para ello usaremos la instrucción try / except
En caso de que no se pueda realizar la conversión a número entero entonces se ejecutará el código dentro de except, en este caso la instrucción continue.
Esta instrucción hace que se pase a la siguiente iteración del bucle while.
En caso de que no se genere ninguna excepción se ejecuta el código dentro de else.
De esta forma solo se añadirá el dato a la lista si se realiza correctamente la conversión.
Además como la condición de finalización del bucle es que se introduzca un valor negativo se comprueba si el valor es mayor que cero, en caso contrario no se añade, y al ser evaluado en el while se finaliza el bucle.
La lista solo admitirá números enteros, para lo cual se convertirá el dato devuelto por input, que es un string en un int.
Esta conversión puede no ser posible, como en el caso de introducir un texto en lugar de un número, lo que genera una excepción.
Como ejemplo, si ejecutamos esta línea de cógido, e introducimos el texto "hola" en la consola, se genera una excepción de tipo ValueError: invalid literal for int() with base 10: 'hola'
dato = int(input("dame un numero: "))
La salida en la consola será:
dame un numero: hola Traceback (most recent call last): File "C:/Users/Ubuntu/PycharmProjects/002/007.py", line 1, in <module> dato = int(input("dame un numero: ")) ValueError: invalid literal for int() with base 10: 'hola' Process finished with exit code 1
Por lo tanto tendremos que controlar la excepción para ignorar esas entradas y continuar con el programa.
Para ello usaremos la instrucción try / except
En caso de que no se pueda realizar la conversión a número entero entonces se ejecutará el código dentro de except, en este caso la instrucción continue.
Esta instrucción hace que se pase a la siguiente iteración del bucle while.
En caso de que no se genere ninguna excepción se ejecuta el código dentro de else.
De esta forma solo se añadirá el dato a la lista si se realiza correctamente la conversión.
Además como la condición de finalización del bucle es que se introduzca un valor negativo se comprueba si el valor es mayor que cero, en caso contrario no se añade, y al ser evaluado en el while se finaliza el bucle.
miLista = [] dato = 999 while dato > 0: try: dato = int(input("dame un numero: ")) except: continue else: if dato > 0: miLista.append(dato) print (miLista)