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.
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: "))
para strings procura siempre usar raw_input
En python 3.5 es input()
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())
no entiendo el porque del uso exagerado de paréntesis ()
agregando lo que te recomendó engel lex:
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: ")
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...
while len(nmyap1)>20 or not nmyap1.isalpha() of not ' ' in nmyap1:
¿lo probaste?
ahh y más allá de la lógica que esto ande no quiere decir que no tenga parentesis de más:
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