Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Incluir lista dentro de diccionario por teclado.
#1
Hola Francisco, buen resto de Miércoles para todos.-
Te explico lo que no puedo lograr, lo que quiero hacer es como una base de datos de clientes(luego aprenderé a
guardar los datos en un .TXT y extraerlos).-
algo como esto: clientes = {1 : ['Daniel Virgili', 'Belgrano 2179', 'Arequito', '471089']}
Algo como una lista dentro de un diccionario, ¿me podes guiar?

Código:
clientes = {}
continuar = True
codigo = 0

while continuar:
    codigo += 1
    clave = str(codigo) + ' : '
    nombre = input("\n Ingrese el nonbre del cliente..: ")
    clientes[codigo] = nombre
    calle = input(" Ingrece la calle del cliente...: ")
    clientes[codigo] + ',' + calle

    continuar = input('¿Quieres añadir más información (Si/No)? ') == "Si"
   
    print(clientes)

Miestras tanto seguire practicando.
Saludos Daniel.
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Responder
#2
Hola gente, buen Jueves para todos.-
Bueno algo conseguí, ahora pido ayuda con 2 cosas, la primera que me corrijan y me digan que otra manera existe
(mas eficiente) para lograr lo mismo y lo que me falta es que alguien me oriente con el print para que salga sin
corchetes, paréntesis etc.
Conozco join y sep pero no me funcionan.-
Desde ya gracias x el tiempo que le dediquen, gracias y saludos, Daniel

Código:
clientes = {}
continuar = True
codigo = 0

while continuar:
    codigo += 1
    clave = str(codigo) #+ ' : '
    nombre = input("\n Ingrese el nonbre del cliente.....: ")
    calle = input(" Ingrece la dirección del cliente..: ")
    ciudad = input(" Ingrece la ciudad del cliente.....: ")

    clientes[clave] = [nombre, calle, ciudad]

    continuar = input('\n¿Quieres añadir más información (Si/No)? ') == "Si"
   
for i in clientes.items():
    print(i)
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Responder
#3
Hola, Daniel.

Está muy bien como lo implementaste. Si la clave de cada cliente es un número, no veo necesidad de convertirla a una cadena vía str(). Para imprimir la información de cada cliente (que es una lista) sin corchetes:

Código:
for cliente in clientes.values():
    print(", ".join(cliente))

Usando clientes.values() podés recorrer únicamente los valores del diccionario. Si también necesitás las claves, entonces deberías hacer:

Código:
for codigo, cliente in clientes.items():
    print(f"Información del cliente número {codigo}: ", ", ".join(cliente))

Sobre la "f" al principio de la cadena te dejo este artículo: https://recursospython.com/guias-y-manua...e-cadenas/.

En cuanto a guardar el diccionario de clientes en un archivo y luego cargarlo al inicio, te recomiendo que uses el módulo pickle, que es una forma estándar de guardar objetos de Python: https://recursospython.com/guias-y-manua...e-objetos/.

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#4
Gracias Francisco, de maravilla, a continuación te muestro como lo imprimo con format.-

En cuanto a la clave me daba un error, algo como que no podía ser una variable int, baya a saber con tanto

practicar(errores) que habré puesto.-

Para finalizar con esto te pido una manito mas, ¿como hago para imprimir la calve? si ya tengo {0[0]} que da el

nombre, no se como hacer.-



Código cliente..: 1 <------ esto es lo que no logro

Cliente.............: Roberto Daniel Virgili

Dirección.........: Ber. E. Lopez 2179

Ciudad............: Arequito





=========================================================

for codigo, cliente in clientes.items():

    print("\n Cliente....: {0[0]}\n Dirección..: {0[1]}\n Ciudad.....: {0[2]}".format(cliente))

    print("----------------------------------")

=========================================================

Saludos y gracias.
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Responder
#5
De nada, Daniel.

Seguramente lo que arrojaba error de tipos era esto:

Código:
clave = str(codigo) + ' : '

Si sacás el str(), tira error porque no se puede concatenar un número con una cadena. Pero de cualquier manera esa concatenación (sumarle los dos puntos) no es necesaria, así que podés usar directamente la clave como número:

Código:
clave = codigo

En cuanto a lo segundo, si hacés "for codigo, cliente in clientes.items()", la clave del diccionario la tendrías en "codigo". Usando format() sería algo así:

Código:
for codigo, cliente in clientes.items():
    print("
Cliente.... {1}: {0[0]}
Dirección..: {0[1]}
Ciudad.....: {0[2]}".format(cliente, codigo))

El problema es que format() es bastante poco legible en estos casos. Mirá cuanto mejor queda así:

Código:
for codigo, cliente in clientes.items():
     print(f"
Cliente.... {codigo}: {cliente[0]}
Dirección..: {cliente[1]}
Ciudad.....: {cliente[2]}")

También podés asignar cliente[0], cliente[1], etc. a variables dentro del bucle para que quede más legible.

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#6
Lo del error es lo que vos decís.-
En cuanto a la última línea de código:
Cita:También podes asignar cliente[0], cliente[1], etc. a variables dentro del bucle para que quede más legible.
Megusto esa manera y la aplique.
Si tenes paciencia, nos estamos leyendo, saludos.-
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Responder


Salto de foro:


Usuarios navegando en este tema: 2 invitado(s)