[ Foro de Python ]

Problema con listas

10-Oct-2020 07:20
Jeifer Martinez
2 Respuestas

Tengo un problema de un supermercado que asigna una cantidad x de articulos a un numero indeterminado de usuarios donde para saber que se trata de un nuevo usuario se agrega una identificacion diferente. No se como asignar la lista de articulos al usuario actual y luego pasar a asignar una nueva lista de articulos a un nuevo usuario.


10-Oct-2020 08:48
Nacho Cabanes (+83)

Haría falta ver algo de código. ¿Estás usando una clase para cada usuario?  Porque si es así, la lista será como cualquier otro campo.

(Has puesto la pregunta dos veces. ¿Borro la anterior?)


11-Oct-2020 17:41
Jeifer Martinez

Hola buenos dias, primero muchas gracias por tu colaboracion, mira esto es lo que me pide que haga el programa te envio esto y te envio luego el programa, yo modifique el programa para que haga arroje lo que se espera que deberia arrojar el programa pero no esta bien hecho.

Reto para la semana 3: El carrito de compras
Límite de entrega: Tuesday, 13 de October de 2020, 23:59
Número máximo de ficheros: 1
Tipo de trabajo: Individual
El Centro Comercial Unaleño está muy cerca de crear carrito de compras. Ahora lo que se requiere de su parte es que se puedan agregar un número indefinido de artículos y calcular la cuenta.

Se han definido varios comandos para realizar la prueba de la lógica del carrito de compras a bajo nivel. Para esto se definen ahora diferentes comandos que se realizan al momento de realizar una compra y que presentan la siguiente sintaxis:

comando&sintaxis_comando

Los comandos definidos ahora son:

Comando 1: Añadir ítem al carrito de compras

La sintaxis del comando 1 es la siguiente:

1&nombre_articulo&cantidad&precio

Comando 2: Generar tirilla de compras

La sintaxis del comando 2 es la siguiente:

2&cedula_cliente

Esta función debe retornar la tirilla de compras en texto
El cálculo de descuento se mantiene y se debe generar la misma tirilla que se generó en el reto anterior, pero incluyendo la cédula del cliente y la cantidad de artículos por producto en el formato indicado en el ejemplo. Dado el valor total de la compra se continúa con la campaña titulada compra más y gasta menos con los siguientes descuentos:
Por compras mayores a 150000 lleva un 10% de descuento.
Por compras mayores a 300000 lleva un 15% de descuento.
Por compras mayores a 700000 lleva un 20% de descuento
Al imprimir la tirilla, la aplicación elimina ese carrito de compras y queda disponible para ejecutar de nuevo comandos.
Comando 3 – Salir de la aplicación

La sintaxis del comando 3 es la siguiente:

3

Este comando simplemente permite salir de la aplicación

Entrada: Diferentes comandos según el cargue y la impresión de tirillas de venta

Salida: Salidas dependiendo del comando especificado anteriormente

Nota: Como el centro comercial está siendo muy generoso con los descuentos, el valor a cobrar en caso de tener centavos se debe aproximar a techo usando la función ceil de python (https://www.tutorialspoint.com/python/number_ceil.htm)

Ejemplo:

Entrada

Salida

1&Chocolatinas Cohete&3&300
1&Mora&1&1000
1&Pan de Maiz&5&300
2&1022734737
1&Televisor&2&1500000
1&Teatro en Casa&1&450000
2&99999287
3

Centro Comercial Unaleño
Compra más y Gasta Menos
NIT: 899.999.063
Cliente: 1022734737
Art Cant Precio
Chocolatinas Cohete 3 $900
Mora 1 $1000
Pan de Maiz 3 $1500
Total: $3400
En esta compra tu descuento fue $0
Gracias por tu compra
---
Centro Comercial Unaleño
Compra más y Gasta Menos
NIT: 899.999.063
Cliente: 99999287
Art Cant Precio
Televisor 2 $3000000
Teatro en Casa 1 $450000
Total: $2760000
En esta compra tu descuento fue $690000
Gracias por tu compra
---

PROGRAMA

#Creacion de variables iniciales necesarias
articulos=[]
cantidad=[]
precios=[]
cedula=[]
sumatoria=[]
sumatoria2=[]

#Importando la funcion de redondeo ceil
import math

#Entradas
entrada=input().split('&')
# Definicion del primer comando
while entrada[0]!='3':
if entrada[0]=='1':
articulos.append(entrada[1])
cantidad.append(int(entrada[2]))
precios.append(int(entrada[3]))
entrada=input().split('&')
#Definicion del segundo comando
if entrada[0]=='2':
cedula.append(entrada[1])
entrada=input().split('&')
#Definicion del tercer comando(Finalizacion de captura de datos)
if entrada[0]=='3':
break

#Tama;o de la lista
n=len(articulos)
m=len(cedula)

#Segunda parte

if m<=1:

#Imprimir primera parte
print('Centro Comercial Unaleño')
print('Compra más y Gasta Menos')
print('NIT: 899.999.063')
print('Cliente: '+cedula[0])
print('Art Cant Precio')

#Calculo de los descuentos
for i in range(0,n):
sumatoria.append(precios[i]*cantidad[i])
precio_sin_descuento=sum(sumatoria)

if 0<=precio_sin_descuento<=150000:
for i in range(0,n):
print(articulos[i], 'x'+str(cantidad[i]), '$'+str(precios[i]*cantidad[i]))
print('Total: $'+str(precio_sin_descuento))
print('En esta compra tu descuento fue $0')

if 150000<precio_sin_descuento<=300000:
total1=(precio_sin_descuento-(precio_sin_descuento*0.1))
for i in range(0,n):
print(articulos[i], 'x'+str(cantidad[i]), '$'+str(precios[i]*cantidad[i]))
print('Total: $'+str(math.ceil(total1)))
print('En esta compra tu descuento fue $'+str(math.ceil((precio_sin_descuento*0.1))))
if 300000<precio_sin_descuento<=700000:
total=precio_sin_descuento-(precio_sin_descuento*0.15)
for i in range(0,n):
print(articulos[i], 'x'+str(cantidad[i]), '$'+str(precios[i]*cantidad[i]))
print('Total: $'+str(math.ceil(total)))
print('En esta compra tu descuento fue $'+str(int(((precio_sin_descuento*.15)))))
if precio_sin_descuento>700000:
total2=precio_sin_descuento-(precio_sin_descuento*0.2)
for i in range(0,n):
print(articulos[i], 'x'+str(cantidad[i]), '$'+str(precios[i]*cantidad[i]))
print('Total: $'+str((math.ceil(total2))))
print('En esta compra tu descuento fue $' + str(math.ceil((precio_sin_descuento*0.20))))

#Imprimir la tirilla segunda parte
print('Gracias por tu compra')

else:
#Imprimir primera parte
print('Centro Comercial Unaleño')
print('Compra más y Gasta Menos')
print('NIT: 899.999.063')
print('Cliente: '+cedula[0])
print('Art Cant Precio')

#Calculo de los descuentos
for i in range(0,3):
sumatoria.append(precios[i]*cantidad[i])
precio_sin_descuento=sum(sumatoria)

if 0<=precio_sin_descuento<=150000:
for i in range(0,3):
print(articulos[i], 'x'+str(cantidad[i]), '$'+str(precios[i]*cantidad[i]))
print('Total: $'+str(precio_sin_descuento))
print('En esta compra tu descuento fue $0')

if 150000<precio_sin_descuento<=300000:
total1=(precio_sin_descuento-(precio_sin_descuento*0.1))
for i in range(0,3):
print(articulos[i], 'x'+str(cantidad[i]), '$'+str(precios[i]*cantidad[i]))
print('Total: $'+str(math.ceil(total1)))
print('En esta compra tu descuento fue $'+str(math.ceil((precio_sin_descuento*0.1))))
if 300000<precio_sin_descuento<=700000:
total=precio_sin_descuento-(precio_sin_descuento*0.15)
for i in range(0,3):
print(articulos[i], 'x'+str(cantidad[i]), '$'+str(precios[i]*cantidad[i]))
print('Total: $'+str(math.ceil(total)))
print('En esta compra tu descuento fue $'+str(int(((precio_sin_descuento*.15)))))
if precio_sin_descuento>700000:
total2=precio_sin_descuento-(precio_sin_descuento*0.2)
for i in range(0,3):
print(articulos[i], 'x'+str(cantidad[i]), '$'+str(precios[i]*cantidad[i]))
print('Total: $'+str((math.ceil(total2))))
print('En esta compra tu descuento fue $' + str(math.ceil((precio_sin_descuento*0.20))))

#Imprimir la tirilla segunda parte
print('Gracias por tu compra')
print('---')
#Imprimir primera parte 222222222222222222222222222
print('Centro Comercial Unaleño')
print('Compra más y Gasta Menos')
print('NIT: 899.999.063')
print('Cliente: '+cedula[1])
print('Art Cant Precio')

#Calculo de los descuentos

for i in range(3,5):
sumatoria2.append(precios[i]*cantidad[i])
precio_sin_descuento2=sum(sumatoria2)

if 0<=precio_sin_descuento2<=150000:
for i in range(3,5):
print(articulos[i], 'x'+str(cantidad[i]), '$'+str(precios[i]*cantidad[i]))
print('Total: $'+str(precio_sin_descuento2))
print('En esta compra tu descuento fue $0')

if 150000<precio_sin_descuento2<=300000:
total1=(precio_sin_descuento2-(precio_sin_descuento2*0.1))
for i in range(3,5):
print(articulos[i], 'x'+str(cantidad[i]), '$'+str(precios[i]*cantidad[i]))
print('Total: $'+str(math.ceil(total1)))
print('En esta compra tu descuento fue $'+str(math.ceil((precio_sin_descuento2*0.1))))
if 300000<precio_sin_descuento2<=700000:
total=precio_sin_descuento2-(precio_sin_descuento2*0.15)
for i in range(3,5):
print(articulos[i], 'x'+str(cantidad[i]), '$'+str(precios[i]*cantidad[i]))
print('Total: $'+str(math.ceil(total)))
print('En esta compra tu descuento fue $'+str(int(((precio_sin_descuento2*.15)))))
if precio_sin_descuento2>700000:
total2=precio_sin_descuento2-(precio_sin_descuento2*0.2)
for i in range(3,5):
print(articulos[i], 'x'+str(cantidad[i]), '$'+str(precios[i]*cantidad[i]))
print('Total: $'+str((math.ceil(total2))))
print('En esta compra tu descuento fue $' + str(math.ceil((precio_sin_descuento2*0.20))))
#Imprimir la tirilla segunda parte
print('Gracias por tu compra')
print('---')






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)