Duda sobre condicional for

Etiquetado: , , , , ,

Viendo 4 entradas - de la 1 a la 4 (de un total de 4)
  • Autor
    Entradas
  • #18064

    Facundo
    Participante

    Buenos días.

    Estoy haciendo repaso de los conocimientos adquiridos hasta ahora, y al crear un programa para evaluar si un correo electrónico es válido o no en función de la longitud, que tenga una sola «@», que tenga uno o más «.» y que no tenga espacios en blanco me queda un código como este:

    email=input(«Introduzca su dirección de correo electrónico: «)
    espacio=False
    arroba=0
    punto=0
    for i in email:
    if i==»@»:
    arroba+=1
    elif i==» «:
    espacio=True
    elif i==».»:
    punto+=1
    if len(email)<=8:
    print(«La dirección de correo electrónico es demasiado corta.»)
    elif arroba==1 and espacio==False and punto>=1:
    print(«Dirección de correo electrónico correcta. Su email es » + email)
    else:
    print(«Dirección de correo electrónico incorrecta.»)

    La duda viene con la línea «if len(email)…» y su «print» asociado. Y es que, por pura estética, a mi esa línea me gusta más meterla dentro del «for», pero si lo hago, cuando introduzco una contraseña de menos de 9 caracteres, me imprime el mensaje tantas veces como caracteres tenga el email introducido (si el email es «xx@x.xx» me imprime 7 veces el mensaje, por ejemplo)

    ¿Hay alguna manera de introducir esa condición dentro del «for» pero haciendo que sólo me lo imprima una vez? Ya digo que es solo por estética, porque no me gusta dejarlo fuera, pero me gustaría saber si es posible o no…

    ¡Gracias de antemano!

    #18065

    Facundo
    Participante

    Bueno, aquí no aparecen las indentaciones pero obviamente, el «if» y los dos «elif» después del «for» están indentados, pero el siguiente «if», el de «len(email)…», así como el siguiente «elif» y el «else» no están indentados (van a la misma altura que el «for»)

    #18093

    Verises
    Participante

    No encuentro el sentido de querer meterlo dentro del if.

    Se podría controlar con un contador y un if previo.

    contador = 0;

    if i in email:

  • contador +=1 #lo pongo al principio porque contador lo he inicializado a 0.
  • resto de tu código antes del if len
  • if len(email) == contador:
  • Y continuarías con tu código
  • Pero me parece complicarlo mucho, simplemente por quererlo tabulado.

#18094

Verises
Participante

No encuentro la manera de tabularlo… y por culpa del HTML ha salido más raro.

Pruebo una última vez, ya que no me permite la edición.

Se podría controlar con un contador y un if previo.

contador = 0;

for i in email:

contador +=1 #Lo pongo al principio porque inicié el contador en 0, si lo inicias en 1, debe ir al final del for.

sigues con tu código dentro del for.

if len(email) == contador: # De esta manera, controlas que ya has llegado a la última vuelta del bucle y va a finalizar.

y pondrías el resto de tu código.

 

Espero haberte ayudado, aunque no le encuentro sentido, sí ha servido de mini ejercicio 😉

Un saludo.

Viendo 4 entradas - de la 1 a la 4 (de un total de 4)
  • Debes estar registrado para responder a este debate.