Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: BigKaz en 20 Noviembre 2016, 02:50 am



Título: (Python) Filtro
Publicado por: BigKaz en 20 Noviembre 2016, 02:50 am
Hola, estoy haciendo un programa en el que quiero mostrar en la pantalla un nombre ingresado por el usuario, pero que ese nombre no sea un numero ni decimal. Como puedo hacer un filtro para esto?


   
Código
  1. nombre = (input("Cual es tu nombre?: "))


Título: Re: (Python) Filtro
Publicado por: Once en 20 Noviembre 2016, 03:19 am
Usa el método isdigit que tienen las cadenas de python:

Código
  1. print(nombre.isdigit())

Devuelve true true si el string es un número y False si no. Ahora, para probar si el número es decimal, no hay una función que lo compruebe, pero hay muchas formas de hacer, lo que a mí se me ocurre es que elimines el separador decimal (ya sea un punto o una coma) y luego compruebes si es un número:

Código
  1. numero = numero.replace(".", "")
  2. print(nombre.isdigit())

Saludos!


Título: Re: (Python) Filtro
Publicado por: BigKaz en 20 Noviembre 2016, 03:36 am
Y al reves? (Verificar si la variable edad es un numero, si es verdadero, seguir con el programa, de lo contrario, preguntar otra vez)
Código
  1. edad = (input("Cuantos años tienes?: "))


Título: Re: (Python) Filtro
Publicado por: tincopasan en 20 Noviembre 2016, 03:40 am
creo que hay error, si quieres verificar que solo sean letras para el nombre, deberías usar:
Código
  1. nombre.isalpha()
devolvera verdadero o falso
y en el caso de la edad

Código
  1. edad.isdigit()

igual que el anterior


Título: Re: (Python) Filtro
Publicado por: BigKaz en 20 Noviembre 2016, 03:46 am
Creo que es al reves, usar isdigit para verificar si el nombre es un numero, por ejemplo:
Código
  1. nombre = (input("Cual es tu nombre?: "))
  2. while (nombre.isdigit()):
  3. nombre = input("Ingresa tu nombre otra vez:  ")

y para que verificar que edad sean letras:

Código
  1. edad = (input("Cuantos años tienes?: "))
  2. while (edad.isalpha()):
  3. edad = input("Ingresa tu edad otra vez:  ")


Título: Re: (Python) Filtro
Publicado por: tincopasan en 20 Noviembre 2016, 04:17 am
con ese criterio lo podés usar como se te de las ganas porque también vale:
Código
  1. nombre = (input("Cual es tu nombre?: "))
  2. while not nombre.isalpha():
  3.    nombre = input("Ingresa tu nombre otra vez:  ")
  4.  

lo que importa es es que isdigit verifica que sean números e isalpha que sean letras.


Título: Re: (Python) Filtro
Publicado por: Once en 20 Noviembre 2016, 05:03 am
El método que debes usar depende de cómo quieres hacer el filtrado, isdigit() verifica que la cadena sea sólo un número. isalpha() verifica que la cadena sea sólo letras, así que si por ejemplo, el nombre contiene algún espacio, o el usuario lo escribe con un punto al final, isalpha() devuelve False pero eso no signica que el nombre no sea válido. Pero, de nuevo, depende de cómo necesites el filtrado.

Acá tienes la documentación, es buena idea hecharle un vistazo https://docs.python.org/3/library/stdtypes.html?highlight=isalpha#str.isalpha

Saludos!