(Python) Filtro

Iniciado por BigKaz, 20 Noviembre 2016, 02:50 AM

0 Miembros y 1 Visitante están viendo este tema.

BigKaz

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 (python) [Seleccionar]
nombre = (input("Cual es tu nombre?: "))

Once

Usa el método isdigit que tienen las cadenas de python:

Código (python) [Seleccionar]
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 (python) [Seleccionar]
numero = numero.replace(".", "")
print(nombre.isdigit())


Saludos!

BigKaz

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 (python) [Seleccionar]
edad = (input("Cuantos años tienes?: "))

tincopasan

creo que hay error, si quieres verificar que solo sean letras para el nombre, deberías usar:
Código (python) [Seleccionar]
nombre.isalpha()
devolvera verdadero o falso
y en el caso de la edad

Código (python) [Seleccionar]
edad.isdigit()

igual que el anterior

BigKaz

Creo que es al reves, usar isdigit para verificar si el nombre es un numero, por ejemplo:
Código (python) [Seleccionar]
nombre = (input("Cual es tu nombre?: "))
while (nombre.isdigit()):
nombre = input("Ingresa tu nombre otra vez:  ")


y para que verificar que edad sean letras:

Código (python) [Seleccionar]
edad = (input("Cuantos años tienes?: "))
while (edad.isalpha()):
edad = input("Ingresa tu edad otra vez:  ")

tincopasan

con ese criterio lo podés usar como se te de las ganas porque también vale:
Código (python) [Seleccionar]

nombre = (input("Cual es tu nombre?: "))
while not nombre.isalpha():
    nombre = input("Ingresa tu nombre otra vez:  ")


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

Once

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!