TODOPIC

Lenguajes de programación para PC => Python => Mensaje iniciado por: Daniel1952 en 01 de Noviembre de 2021, 11:34:52

Título: Imprimir por pantalla un diccionario “limpio”
Publicado por: Daniel1952 en 01 de Noviembre de 2021, 11:34:52
Parezco una revista que había en otros tiempos(Argentina) “Juan y el preguntón” jaja-jaja.
Bueno x mas que busco no encuentro la solución, lo que no puedo hacer es que la impresión salga limpia, el diccionario sin la lista en su interior todo ok. Pero con la lista no lo logro, les dejo lo que llevo hecho.

Lo primero, el programita para practicar con diccionarios:

Código: Python
  1. productos = {}
  2. while True:
  3.     codigo = input("\n Ingrese el código del producto...: ")
  4.     if not codigo:
  5.         break
  6.     nombre = input("\n Ingrese el nombre del producto...: ")
  7.     if not nombre:
  8.         break
  9.     precio = input("\n Ingrese el precio del producto...: ")
  10.     if not precio:
  11.         break
  12.    
  13.     productos[codigo] = [nombre, precio]
  14.    
  15.    
  16. for llaves, producto in productos.items():
  17.   print(llaves, ' - ', producto)

Este es con lo que estoy practicando ¿Cómo le saco los corchetes?:

Código: Python
  1. productos = {520 : ["Tomate", 125.50], 126 : ["Arveja", 98.50], 134 : ["Morron", 105.00]}
  2. for llaves, producto in productos.items():
  3.     print(llaves, '-', producto)

Código: Python
  1. 520 - ['Tomate', 125.5]
  2. 126 - ['Arveja', 98.5]
  3. 134 - ['Morron', 105.0]
Desde ya muchas gracias, slds. Daniel
Título: Re:Imprimir por pantalla un diccionario “limpio”
Publicado por: Nocturno en 01 de Noviembre de 2021, 12:43:54
A ver así:
Código: Python
  1. productos = {520 : ["Tomate", 125.50], 126 : ["Arveja", 98.50], 134 : ["Morron", 105.00]}
  2. for llaves, producto in productos.items():
  3.     print(llaves, end="-")
  4.     for i in producto:
  5.         print (i, end=",")
  6.     print ("\b \r")
Título: Re:Imprimir por pantalla un diccionario “limpio”
Publicado por: Daniel1952 en 01 de Noviembre de 2021, 13:07:02
Gracias nocturno, un sueño como funciona, te pido un último favor(con respecto a este tema, claro) te muestro como quiero imprimirlo pero sin los 3 puntos finales y el signo $.

Código: Python
  1. for llaves, producto in productos.items():
  2.     print(llaves, end=" - ")
  3.     for i in producto:
  4.         print (i, end="...$ ")
  5.     print ("\b \r")

Código: Python
  1. 520 - Tomate...$ 125.5...$
  2. 126 - Arveja...$ 98.5...$
  3. 134 - Morron...$ 105.0...$

Saludos y lo mejor para vos.Daniel.
Título: Re:Imprimir por pantalla un diccionario “limpio”
Publicado por: Nocturno en 01 de Noviembre de 2021, 13:11:59
No es muy elegante, porque lo que hago es borrar los últimos "...$" de cada línea, pero funciona:

Código: Python
  1. productos = {520 : ["Tomate", 125.50], 126 : ["Arveja", 98.50], 134 : ["Morron", 105.00]}
  2. for llaves, producto in productos.items():
  3.     print(llaves, end="-")
  4.     for i in producto:
  5.         print (i, end="...$")
  6.     print ("\b\b\b\b    \r")
Título: Re:Imprimir por pantalla un diccionario “limpio”
Publicado por: Picuino en 01 de Noviembre de 2021, 15:20:50
Código: Python
  1. productos = {520 : ["Tomate", 125.50], 126 : ["Arveja", 98.50], 134 : ["Morron", 105.00]}
  2. for llaves, producto in productos.items():
  3.     print("{} - {}... ${}".format(llaves, producto[0], producto[1]))

Código: [Seleccionar]
520 - Tomate... $125.5
126 - Arveja... $98.5
134 - Morron... $105.0
Título: Re:Imprimir por pantalla un diccionario “limpio”
Publicado por: Picuino en 01 de Noviembre de 2021, 15:25:13
Una forma de imprimir una lista con el mismo separador entre los elementos es:
lista = [1, 2, 3, 4]
print(";".join(lista))

Y la salida será:
1;2;3;4
Título: Re:Imprimir por pantalla un diccionario “limpio”
Publicado por: Daniel1952 en 01 de Noviembre de 2021, 15:58:45
Gracias a todos x ayudarme, cuando vi format me acorde de string-f y me salió esto, ¿es igualmente valido, no?

Código: Python
  1. productos = {520 : ["Tomate", 125.50], 126 : ["Arveja", 98.50], 134 : ["Morron", 105.00]}
  2. for llaves, producto in productos.items():
  3.     print(f"{llaves} - {producto[0]}...$ {producto[1]:>8.2f}")

Código: Python
  1. 520 - Tomate...$   125.50
  2. 126 - Arveja...$    98.50
  3. 134 - Morron...$   105.00

Perdón, tiene que hacerse de esta manera porque de lo contrario da error(el campo precio, coma flotante)

Código: Python
  1. for llaves, producto in productos.items():
  2.     print(f"{llaves} - {producto[0]}...$ {float(producto[1]):>8.2f}")
Saludos y gracias.
Daniel
Título: Re:Imprimir por pantalla un diccionario “limpio”
Publicado por: Picuino en 01 de Noviembre de 2021, 16:44:22
Los dos funcionan porque producto[1] ya es un número en coma flotante.
Está genial. Ya vas conociendo mejor el lenguaje.
Título: Re:Imprimir por pantalla un diccionario “limpio”
Publicado por: Daniel1952 en 01 de Noviembre de 2021, 17:30:18
Estoy tratando, me tengo mucha fe, tengo que hacer un gran esfuerzo para no ser tan “vago” y buscar mas en internet y no tanto en los foros, lo que ocurre es que me tienta porque con Uds. es un trato directo y con el amigo google si no hago la consulta “correctamente” algo me pierdo, “es muy torpe y muchas veces no entiende lo que uno necesita”, paciencia  :) :) :).-
No tomes esto como algo solapado, lo que ocurre es que vi tantos “tirones de oreja” con aquello de que “aquí no se hacen las tareas” que por momento me da cierto resquemor preguntar tan seguido, igual Uds. me dirán si les estoy quitando demasiado tiempo.-
Un abrazo enorme desde Argentina.-
Slds. Daniel
Título: Re:Imprimir por pantalla un diccionario “limpio”
Publicado por: Nocturno en 02 de Noviembre de 2021, 02:37:22
No Daniel, tu caso es muy diferente y positivo para todos los que visitan el foro ya que aportas tu código y preguntas cosas concretas.

Aquí no ayudamos a aquellos que vienen pidiendo que se lo hagan entero, y ni siquiera suben su código porque no lo tienen.
Título: Re:Imprimir por pantalla un diccionario “limpio”
Publicado por: Picuino en 02 de Noviembre de 2021, 11:04:55
Pienso lo mismo.
Adelante con las preguntas.  ((:-))