Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: BigKaz en 3 Diciembre 2016, 04:39 am



Título: (Python) Admitir espacios
Publicado por: BigKaz en 3 Diciembre 2016, 04:39 am
Hola, tengo un programa que registra nombre y apellido y tengo un filtro para que no se admitan caracteres que no sean letras, pero el espacio al no ser una letra no la admite y no puedo poner el apellido, alguien sabe como puedo admitir los espacios?
He visto la sentencia (S.isspace()) pero no le veo utilidad ya que solo devuelve True si todo el str tiene espacios.
Código
  1. nmyap1 = (input("MESA 1: Ingresa nombre y apellido de 1era persona: "))
  2. while (len(nmyap1)>20) or (not (nmyap1.isalpha())):
  3.    nmyap1 = (input("Demasiados car. (max 20) o car. invalido, ingrese otra vez: "))


Título: Re: (Python) Admitir espacios
Publicado por: engel lex en 3 Diciembre 2016, 05:09 am
para strings procura siempre usar raw_input


Título: Re: (Python) Admitir espacios
Publicado por: BigKaz en 3 Diciembre 2016, 05:12 am
En python 3.5 es input()


Título: Re: (Python) Admitir espacios
Publicado por: engel lex en 3 Diciembre 2016, 05:26 am
En python 3.5 es input()

y por eso se aclara la versión!   :silbar:

while (condicion1 or condicion2) and (variable.isspace())


Título: Re: (Python) Admitir espacios
Publicado por: tincopasan en 3 Diciembre 2016, 07:58 am
no entiendo el porque del uso exagerado de paréntesis ()
agregando lo que te recomendó engel lex:
Código
  1. nmyap1 = input("MESA 1: Ingresa nombre y apellido de 1era persona: ")
  2. while len(nmyap1)>20 or not nmyap1.isalpha() and nmyap1.isspace() :
  3.    nmyap1 = input("Demasiados car. (max 20) o car. invalido, ingrese otra vez: ")
  4.  


Título: Re: (Python) Admitir espacios
Publicado por: engel lex en 3 Diciembre 2016, 08:16 am
no entiendo el porque del uso exagerado de paréntesis ()
los parentesis no están mal -.- no es lo mismo

v1 or v2 and v3
que
(v1 or v2) and v3

en la primera se comporta como v1 or (v2 and v3)

igual la lógica está mala... .isspace() evalua solo si son espacios...

Código
  1. while len(nmyap1)>20 or not nmyap1.isalpha() of not ' ' in nmyap1:


Título: Re: (Python) Admitir espacios
Publicado por: tincopasan en 3 Diciembre 2016, 11:02 am
¿lo probaste?
ahh y más allá de la lógica que esto ande no quiere decir que no tenga parentesis de más:
Código
  1. nmyap1 = (input("MESA 1: Ingresa nombre y apellido de 1era persona: "))
  2.  


ahh me olvidé, estoy siguiendo el ejemplo que dieron, no lo haría así sino con el modulo re