how can I ask the user to enter two names and two last names, only letters

3
validacion=''
lista=[]
while validacion!=validacion:
    nombres = input('Ingrese nombres completos:')
    lista=nombres.split(" ")
    validacion=len(lista)
    if validacion==4 and nombres.isalpha():
        print(nombres)
    print('¡Solo ingrese letras!')
    
asked by Katy 31.05.2018 в 00:44
source

2 answers

0

I recommend using regular expressions, since there are surnames that are made up of 2 words ex. "de León" , then if the user is called Fulanito Campirano Melendez de Leon , you will get 5 items on your list.

import re
# Especificamos que validaremos Letras Mayusculas, Minúsculas y espacio en blanco
# Esperamos como mínimo 2 caracteres y un máximo de 20
palabra = re.compile(r'^[A-Z|a-z| ]{2,20}$')

# Preparamos las solicitudes por Orden
preguntas = ("1er Nombre: ", "2do Nombre: ", "1er Apellido: ", "2do Apellido: ")
respuestas = []

for i in preguntas:
    rsp = input(i)
    if palabra.search(rsp):
        respuestas.append(rsp)
    else:
        # En caso de no cumplir la expresión regular (en 2do nombre solo dio enter)
        respuestas.append(" ")

print(respuestas)

NOTE: In this example I do not include the validation of the letter Ñ and accented letters.

    
answered by 19.12.2018 в 19:00
-1

You can use this function to see if it works for you

function soloLetras($in): 
 if(preg_match('/[^a-Z]/',$in)):
   return false
 else: 
   return true
    
answered by 08.06.2018 в 23:51