Python - Ayuda Crear un diccionario con los resultados de un controlador de flujo

 
Vista:
sin imagen de perfil

Ayuda Crear un diccionario con los resultados de un controlador de flujo

Publicado por Nacho (1 intervención) el 07/12/2022 15:02:18
Estimados
Buenos dias!
Estoy realizando un curso online de phyton principiante y debo realizar una entrega de un login de usuario y que los datos me los agregue en un diccionario basededatos={}

No estoy entendiendo como hacer para que el resultado del login lo vaya almacenando en el diccionario

Me podran dar una mano para entenderlo, gracias!

import re
while True:
error=0

usuario=input("Nombre de usuario ")
pass1=input("contrasena ")
pass2=input("repite contrasena ")

if len(usuario)<8 or len(usuario)>8:
print("la longitud del usuario no es correcta")
error=1
if len(pass1)<8:
print("la longitud de la contrasena no es correcta")
error=1
if not re.search('[0-9]',pass1):
print("la contrasena tiene que tener al menos un numero")
error=1
if pass1!=pass2:
print("las contrasenas no son iguales")
error=1

if error==0:
print("Usuario Creado Satisfactoriamente")
break
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

Ayuda Crear un diccionario con los resultados de un controlador de flujo

Publicado por Francisco Javier (313 intervenciones) el 07/12/2022 22:05:08
Buenas así puedes incorporar el usuario y contraseña a la bbdd en forma de diccionario, pero creo que deberías de optimizar más el código para que cuando te vaya pidiendo el usuario y passsword vaya condicionando cada uno. de esta manera y con la sintaxis:
1
diccionario[clave]=valor
Puedes ir introduciendo elementos en el dicionario.
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
import re
 
diccionario_basededatos={}
while True:
    error=0
    usuario=input("Nombre de usuario ")
    pass1=input("contrasena ")
    pass2=input("repite contrasena ")
 
    if len(usuario)<8 or len(usuario)>8:
        print("la longitud del usuario no es correcta")
        error=1
    if len(pass1)<8:
        print("la longitud de la contrasena no es correcta")
        error=1
    if not re.search('[0-9]',pass1):
        print("la contrasena tiene que tener al menos un numero")
        error=1
    if pass1!=pass2:
        print("las contrasenas no son iguales")
        error=1
 
    if error==0:
        diccionario_basededatos[usuario]=pass1
        print("Usuario Creado Satisfactoriamente\n")
        print('-----------Base de Datos------------')
        for clave,valor in diccionario_basededatos.items():
            print(f'''{clave} -------> {valor}
            ''')
    break

También he visto que el usuario si o sí tiene que tener 8 como longitud y pienso que sólo querías poner mas de 8, bueno eso es lo de menos per optimizando cada input para corregirlo en cada momento lo haría así:
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
import re
 
diccionario_basededatos={}
while True:
    error=0
    usuario=input("Nombre de usuario ")
    while len(usuario)<8 or len(usuario)>8:
        print("la longitud del usuario no es correcta")
        usuario=input("Nombre de usuario ")
    error=1
    pass1=input("contrasena ")
    while len(pass1)<8:
        print("la longitud de la contrasena no es correcta")
        pass1=input("contrasena ")
    while not re.search('[0-9]',pass1):
        print("la contrasena tiene que tener al menos un numero")
        pass1=input("contrasena ")
    error=1
    pass2=input("repite contrasena ")
    while pass1!=pass2:
        print("las contrasenas no son iguales")
        pass2=input("repite contrasena ")
    error=0
    if error==0:
        diccionario_basededatos[usuario]=pass1
        print("Usuario Creado Satisfactoriamente\n")
        print('-----------Base de Datos------------')
        for clave,valor in diccionario_basededatos.items():
            print(f'''{clave} -------> {valor}
            ''')
    break
Así para entendenrlo por partes sería más correcto, pero podrías optimizarlo mucho mas con funciones.
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
import re
 
diccionario_basededatos={}
def r_usuario(usuario):
    while len(usuario)<8 or len(usuario)>8:
        print("la longitud del usuario no es correcta")
        usuario=input("Nombre de usuario ")
    return usuario
 
def r_password(pass1):
    while len(pass1)<8:
        print("la longitud de la contrasena no es correcta")
        pass1=input("contrasena ")
    while not re.search('[0-9]',pass1):
        print("la contrasena tiene que tener al menos un numero")
        pass1=input("contrasena ")
    pass2=input("repite contrasena ")
    while pass1!=pass2:
        print("las contrasenas no son iguales")
        pass2=input("repite contrasena ")
    return pass1
 
user=r_usuario(usuario=input("Nombre de usuario "))
passw=r_password(pass1=input("contrasena "))
 
diccionario_basededatos[user]= passw
print("Usuario Creado Satisfactoriamente\n")
print('-----------Base de Datos------------')
for clave,valor in diccionario_basededatos.items():
            print(f'''{clave} -------> {valor}
            ''')
también hay opciones que optimizarlo con menos lineas
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