Python - Quiero que se repita el programa hasta que se introduzca un email

 
Vista:

Quiero que se repita el programa hasta que se introduzca un email

Publicado por ProgramadorNovato (2 intervenciones) el 12/10/2016 03:04:55
Lo que pasa es que quiero que el programa se repita si lo que se introduce no es un correo electrónico, y que se detenga cuando lo que se introduce si lo es, porque siempre que introduzco cualquier caso, ya no me deja introducir otro correo. Es para una tarea, gracias:D

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
e=0
email=input('Ingresar correo electrónico: ')
for i in range(0,len(email)):
    if e==0:
        if email[i]>='A' and email[i]<='Z':
            e=1
        elif email[i]>='a' and email[i]<='z':
            e=1
        elif email[i]>='0' and email[i]<='9':
            e=1
        else:
            e=5
    elif e==1:
        if email[i]>='A' and email[i]<='Z':
            e=1
        elif email[i]>='a' and email[i]<='z':
            e=1
        elif email[i]>='0'and email[i]<='9':
            e=1
        elif email[i]=='.':
            e=2
        elif email[i]=='@':
            e=6
        else:
            e=5
    elif e==2:
        if email[i]>='A' and email[i]<='Z':
            e=1
        elif email[i]>='a' and email[i]<='z':
            e=1
        elif email[i]>='0' or email[i]<='9':
            e=1
        else:
            e=5
    elif e==3:
        if email[i]>='A' and email[i]<='Z':
            e=3
        elif email[i]>='a' and email[i]<='z':
            e=3
        elif email[i]>='0' and email[i]<='9':
            e=3
        elif email[i]=='.':
            e=4
        else:
            e=5
    elif e==4:
        if email[i]>='A' and email[i]<='Z':
            e=3
        elif email[i]>='a' and email[i]<='z':
            e=3
        elif email[i]>='0' and email[i]<='9':
            e=3
    elif e==6:
        if email[i]>='A' and email[i]<='Z':
            e=3
        elif email[i]>='a' and email[i]<='z':
            e=3
        elif email[i]>='0' and email[i]<='9':
            e=3
        else:
            e=5
    while e==5:
            print('Introduce de nuevo el correo')
    else: break
if e==3 or e==4:
    print('La cadena',email,'es un correo electronico')
elif e==5:
    print('La cadena',email,'no es un correo electrónico')
else:
    print('Imposible decidir si',email,'es un correo electrónico')
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 1.120
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Quiero que se repita el programa hasta que se introduzca un email

Publicado por kip (257 intervenciones) el 12/10/2016 05:25:28
Hola, lo que te recomendaria para validar un email es usar expresiones regulares, usando la libreria re que te ofrece python, a continuacion un codigo que he preparado para ti:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import re
def validEmail(email):
    if (isinstance(email, str)):
        if (re.search(r'\b(^[\w\.-_]+[@]+\w+[.]{1}\w{2,4}$)\b', email.strip())):
            return True
        return False
 
while True:
    email = input("Ingrese email: ")
    if not (validEmail(email)):
        print ("La cadena '%s' no es un correo valido" % email)
    else:
        print ("La cadena '%s' es un correo valido" % email)
        break

https://docs.python.org/2/library/re.html

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Quiero que se repita el programa hasta que se introduzca un email

Publicado por ProgramadorNovato (2 intervenciones) el 12/10/2016 05:38:30
Muchas gracias, me sirvió tu información
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar