(Python) Admitir espacios

Iniciado por BigKaz, 3 Diciembre 2016, 04:39 AM

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

BigKaz

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 (python) [Seleccionar]
nmyap1 = (input("MESA 1: Ingresa nombre y apellido de 1era persona: "))
while (len(nmyap1)>20) or (not (nmyap1.isalpha())):
   nmyap1 = (input("Demasiados car. (max 20) o car. invalido, ingrese otra vez: "))

engel lex

para strings procura siempre usar raw_input
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

BigKaz


engel lex

Cita de: BigKaz en  3 Diciembre 2016, 05:12 AM
En python 3.5 es input()

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

while (condicion1 or condicion2) and (variable.isspace())
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

tincopasan

no entiendo el porque del uso exagerado de paréntesis ()
agregando lo que te recomendó engel lex:
Código (python) [Seleccionar]

nmyap1 = input("MESA 1: Ingresa nombre y apellido de 1era persona: ")
while len(nmyap1)>20 or not nmyap1.isalpha() and nmyap1.isspace() :
    nmyap1 = input("Demasiados car. (max 20) o car. invalido, ingrese otra vez: ")

engel lex

Cita de: tincopasan en  3 Diciembre 2016, 07:58 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 (python) [Seleccionar]
while len(nmyap1)>20 or not nmyap1.isalpha() of not ' ' in nmyap1:
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

tincopasan

#6
¿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 (python) [Seleccionar]

nmyap1 = (input("MESA 1: Ingresa nombre y apellido de 1era persona: "))



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