Python - Duda sobre While en Python

 
Vista:
Imágen de perfil de Román

Duda sobre While en Python

Publicado por Román (8 intervenciones) el 20/10/2021 08:34:15
Saludos a todos.

Estoy realizando un ejercicio probando el uso del While y creo que no lo estoy implementando adecuadamente en el siguiente código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
email = input("Introduce tu dirección de correo electrónico: ")
 
arroba = email.count('@')
 
while (arroba != 1 or email.rfind('@') == (len(email)-1) or email.find('@') == 0):
 
    print("La dirección de correo electrónico no es correcta.\nRecuerda que el e-mail no puede contener"
    "dos arrobas (@@), tampoco puede tener arroba al principio o al final de la dirección.")
    email = input("Introduce tu dirección de correo electrónico: ")
 
 
else:
 
    print ("La dirección de correo electrónico introducida es:", email)

El programa solicita introducir una dirección de correo electrónico, verifica si tiene dos @@ y también chequea si el e-mail tiene una arroba al principio o al final, indicando que la dirección introducida no es correcta.

Todo funciona si coloco de primero un email correcto (ejemplo: [email protected]), pero si coloco un correo electrónico con dos arrobas o con una arroba al principio o al final, se queda estancado en el bucle While así ingrese un e-mail correcto (ejemplo: [email protected]).

Agradezco todo el apoyo que puedan brindar.
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 Francisco Javier
Val: 249
Ha aumentado su posición en 29 puestos en Python (en relación al último mes)
Gráfica de Python

Duda sobre While en Python

Publicado por Francisco Javier (313 intervenciones) el 20/10/2021 13:05:15
Buenas el else al final no viene a cuento si no hay un if, para sacarlo del bucle sobra simplemente quitandole de la indentacion del bucle whilr y la apreciacion de arroba debes incluirla dentro del bucle a la hora de repetir el emil. Un saludo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
email = input("Introduce tu dirección de correo electrónico: ")
 
arroba = email.count('@')
 
while (arroba != 1 or email.rfind('@') == (len(email)-1) or email.find('@') == 0):
 
    print("La dirección de correo electrónico no es correcta.\nRecuerda que el e-mail no puede contener"
    "dos arrobas (@@), tampoco puede tener arroba al principio o al final de la dirección.")
    email = input("Introduce tu dirección de correo electrónico: ")
    arroba = email.count('@')
 
 
 
 
print ("La dirección de correo electrónico introducida es:", email)
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
Imágen de perfil de Román

Duda sobre While en Python

Publicado por Román (8 intervenciones) el 22/10/2021 04:35:54
Gracias por las sugerencias. Ahora el programa funciona de manera correcta.
En efecto, había olvidado por completo colocar el recuento de las arrobas dentro del while.
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
sin imagen de perfil

Duda sobre While en Python

Publicado por Juan (27 intervenciones) el 06/02/2024 12:41:26
Saludos. Disculpen si soy entrometido. Pero puede explicarme la parte del código que copio y pego. Es que necesito entender para aprender python. Saludos

.
1
(len(email)-1)
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
Imágen de perfil de Francisco Javier
Val: 249
Ha aumentado su posición en 29 puestos en Python (en relación al último mes)
Gráfica de Python

Duda sobre While en Python

Publicado por Francisco Javier (313 intervenciones) el 06/02/2024 13:20:18
len(email) devuelve la longitud de la cadena email, y luego se resta 1 porque los índices en Python comienzan desde 0, por lo que el último carácter tiene un índice de len(email) - 1 y el ultimo indice sería 1 menos.

1
2
3
4
5
email = "ejemplo"
 
print("La palabra es:", email)
print("La longitud de la palabra es:", len(email))
print("El último índice de la palabra es:",  len(email) - 1)

si intentas hacer:
1
print(email[len(email)])
saldrá un error de fuera de rango por lo que para podes acceder al ultimo indice debes:
1
print(email[len(email)-1])
Salu2
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
sin imagen de perfil

Duda sobre While en Python

Publicado por Juan (27 intervenciones) el 06/02/2024 14:11:04
Muchas gracias señor Francisco Javier por su ayuda.
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